1.普通异常
以除数不能为0来举例,代码如下:
package began;
import java.util.Scanner;
public class tcf {
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
System.out.println("请输入第一个操作数");
int num1=input.nextInt();
System.out.println("请输入第二个操作数");
int num2=input.nextInt();
int result=0;
//尝试去执行代码,看是否有错误
try{
result=num1/num2;
System.out.println("结果是"+result);
}catch(Exception ex){ //如果有错误就会抓住,没有错误就跳过catch
//ex就是异常对象
System.err.println("除数不能为0");
ex.printStackTrace();//打印引发异常的详细信息
System.out.println(ex.getMessage());//返回异常信息的字符串(是printStackTrace输出的信息的一部分)
return;//可以有return,不影响finally输出
}finally{
System.out.println("程序结束!");
}
}
}
2.多路异常捕获
2.1.排列catch语句的顺序:先子类后父类
2.2.只会执行第一个与catch匹配的异常捕获
以除数不能为0、只能整数......来举例,代码如下:
package began;
import java.util.InputMismatchException;
import java.util.Scanner;
public class tcf {
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
//尝试去执行代码,看是否有错误
try{
System.out.println("请输入第一个操作数");
int num1=input.nextInt();
System.out.println("请输入第二个操作数");
int num2=input.nextInt();
int result=num1/num2;
System.out.println(result);
}catch(InputMismatchException ex){
System.out.println("除数和被除数都只能是整数!");
}catch(ArithmeticException ex){
System.out.println("除数不能为0!");
}catch(Exception ex){
System.out.println("未知异常!");
}finally {
System.out.println("程序结束");
}
}
}