-
异常
Error:Java虚拟机无法解决的严重问题。如:JVM 系统内部错误、资源耗尽等严重情况。比如:StackOverflowError 和 OOM。一般不编写针对性的代码进行处理。
Exception: 其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。比如:若试图使用空值对象引用、除数为零或数组越界,则分别引发运行时异常(NullPointerException、ArithmeticException)和 ArrayIndexOutOfBoundException。
检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。
运行时异常: 运行时异常是可能被程序员避免的异常。与检查性异常相反,运行时异常可以在编译时被忽略。
非运行时异常 (编译异常):是 RuntimeException 以外的异常,类型上都属于 Exception 类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException 等以及用户自定义的 Exception 异常,一般情况下不自定义检查异常。
错误: 错误不是异常,而是脱离程序员控制的问题。错误在代码中通常被忽略。例如,当栈溢出时,一个错误就发生了,它们在编译也检查不到的。
-
try-catch-finally
-
throw 和 throws
-
自定义异常
class MyException extends Exception{ static final long serialVersionUID = -3387516993124229948L; private int idnumber; public MyException(String message, int id) { super(message); this.idnumber = id; } public int getId(){ return idnumber; } } public class MyExpTest { public void regist(int num)throws MyException { if (num < 0){ throw new MyException("人数为负值,不合理", 3); }else { System.out.println("登记人数" + num); } } public void manager(){ try { regist(100); }catch (MyException e){ System.out.println("登记失败,出错种类" + e.getId()); } System.out.println("本次登记操作结束"); } public static void main(String[] args) { MyExpTest t = new MyExpTest(); t.manager(); } }
-
小悟
世界上最遥远的距离,是我在if里你在 else 里,似乎一直相伴又永远分离;
世界上最痴心的等待,是我当 case 你是 switch,或许永远都选不上自己;
世界上最真情的相依,是你在 try 我在 catch。无论你发神马脾气,我都默默承受,静静处理。到那时,再来期待我们的 finally。
Java 异常处理
最新推荐文章于 2022-05-20 15:00:31 发布