Java异常处理机制
try、catch、finally
try → 监控区域,执行可能产生异常的代码
catch → 捕获、处理异常
finally → 善后处理,无论是否发现异常,代码总能执行
import java.util.Scanner;
class person
{
String name;
}
public class Test {
public static void main(String[] args) {
person p = null;
int a = 10;
int b;
int c;
Scanner sc = new Scanner(System.in);
System.out.println("请输入除数");
b = sc.nextInt();
try{
c = a/b;
p.name = "qybs";
}catch (java.lang.NullPointerException e){
System.out.println("空指针未定义");
}catch (java.lang.ArithmeticException e){
System.out.println("0不能为除数,请再输入");
b = sc.nextInt();
c = a/b;
System.out.println("c="+c);
}
finally {
System.out.println("println");
}
}
}
throw和throws
throw用于手动抛出异常,用在方法内,后面跟上要抛出的异常类对象
throws用于在方法上标识要暴露的异常,后面跟上可能要抛出的异常类名
class Bar
{
int age;
public void Bar(int age){
this.age = age;
}
void check()throws AgeLessthanEighteenException{
if(age < 18){
throw new AgeLessthanEighteenException("年纪太小");
}
}
}
class AgeLessthanEighteenException extends Exception
{
private String message;
public AgeLessthanEighteenException(String message){
this.message = message;
}
}
public class Test {
public static void main(String[] args) {
Bar b = new Bar();
try{
b.check();
}catch (AgeLessthanEighteenException e){
System.out.println(e.getMessage());
e.printStackTrace();
}
System.out.println("end");
}
}