Java 异常、try catch、Thorwable、printStackTrace、throws和throw的区别、自定义异常
程序员文章站
2022-05-05 14:48:42
...
异常:程序出现不正常情况
Thorwable -->
- 1.Error
- 2.Exception -->
-
- 2.1 RuntimeException
-
- 2.2 非RuntimeException
Error:严重问题,不需要处理
Exception:称为异常类,表示程序本身可以处理的问题
- RuntimeException:编译期不检查,出现问题后,需要我们回来修改代码
- 非RuntimeException:编译期就必须处理的,否则程序不能通过编译,更不能正常运行。
JVM的默认处理方案
程序出现问题,JVM会默认处理
- 把异常的名称,异常原因及异常出现的位置等信息输出在了控制台
- 程序停止执行
异常处理
- try … catch …
try{
可能出现异常的代码;
} catch(异常类名 变量名){
异常的处理代码;
}
出现异常会生成异常类对象,异常对象被提交给Java运行时系统;
当Java运行时系统接收到异常对象时,会到catch中寻找匹配的异常类;
然后进行异常的处理,处理完后进行程序往下执行;
public class Error {
public static void main(String[] args) {
System.out.println("开始");
method();
System.out.println("结束");
}
public static void method() {
try {
int[] arr = { 1, 2, 3 };
System.out.println(arr[3]); //ArrayIndexOutOfBoundsException
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("访问的数组索引不存在");
//e.printStackTrace();
}
}
}
- throws
throw 异常类名;
public class Error {
public static void main(String[] args) {
System.out.println("开始");
method();
System.out.println("结束");
}
public static void method() throws ArrayIndexOutOfBoundsException{
int[] arr = { 1, 2, 3 };
System.out.println(arr[3]);
}
}
}
Throwable成员方法
public String getMessage() 返回throwable的详细消息字符串
public String toString() 返回此可抛出的简短描述
public void printStackTrace() 把异常的错误信息输出在控制台,显示最全
public static void method() {
try {
int[] arr = { 1, 2, 3 };
System.out.println(arr[3]);//new ArrayIndexOutOfBoundsException();
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println(e.getMessage());//3
System.out.println(e.toString()); //java.lang.ArrayIndexOutOfBoundsException: 3
e.printStackTrace();
}
}
throws和throw的区别
-
throws
用在方法声明后面。跟的是异常类名;
表示抛出异常,由该方法的调用者来处理;
表示出现异常的一种可能性,并不一定会发生这些异常; -
throw
用在方法体内,跟的是异常对象名
表示抛出异常,由方法体内的语句处理
执行throw一定抛出了某种异常
自定义异常
public class ScoreCheck extends Exception{
public ScoreCheck() {}
public ScoreCheck(String message) {
super(message);
}
}
public class Teacher {
public void check(int score) throws ScoreCheck {
if(score<0 || score>100) {
throw new ScoreCheck("分数不正确");
}else {
System.out.println("分数正常");
}
}
}
public class Test {
public static void main(String[] args){
Teacher t = new Teacher();
System.out.println("输入分数:");
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
try {
t.check(num);
}catch(ScoreCheck e){
e.printStackTrace();
}
}
}
推荐阅读
-
Java13-day04【Integer、int和String的相转、自动装箱和拆箱、Date、SimpleDateFormat、Calendar、异常、try...catch、throws】
-
异常类的了解、异常的处理方案、编译时期异常和运行时期异常区别、throws和throw的区别、自定义异常类 、捕获异常的标准格式、final、finally、finalize的区别
-
try catch和Throws处理异常的区别
-
详述自定义异常类与throw和throws的区别
-
异常的使用,try-catch-finally的使用,自定义异常,throws和throw的区别
-
Java的异常处理:try-catch-finally throws throw
-
java的异常处理try, catch,throw,throws和finally
-
异常(try……catch……finally、throws和throw的区别、自定义异常)
-
Java 异常、try catch、Thorwable、printStackTrace、throws和throw的区别、自定义异常
-
JAVA异常的处理try...catch,finally,throw,throws