3.5.1 try-catch 形式: try{编写可能会出现异常的代码}catch(异常类型e){处理异常的代码//记录日志/打印异常信息/继续抛出异常}
例如:
public class TryCatchDemo {public static void main(String[] args) {SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");try {//当产生异常时,必须有处理方式 。要么捕获,要么声明 。Date date = simpleDateFormat.parse("2020-10-06");} catch (ParseException e) {// 括号中需要定义什么呢?//try中抛出的是什么异常,在括号中就定义什么异常类型e.printStackTrace();//记录日志/打印异常信息/继续抛出异常}}}
如何获取异常信息:
Throwable类中定义了一些查看方法:
public String getMessage():获取异常的描述信息,原因(提示给用户的时候,就提示错误原因 。public String toString():获取异常的类型和异常描述信息 。public void printStackTrace():打印异常的跟踪栈信息并输出到控制台 。具体我们可以来看下:public class TryCathDemo2 { public static void main(String[] args) {SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");try {//当产生异常时,必须有处理方式 。要么捕获,要么声明 。//演示下获取异常信息,修改了格式 。Date date = simpleDateFormat.parse("2020年10月06");} catch (ParseException e) {//public String getMessage():获取异常的描述信息,原因(提示给用户的时候,就提示错误原因System.out.println(e.getMessage());//Unparseable date: "2020年10月06"System.out.println(e.toString());//java.text.ParseException: Unparseable date: "2020年10月06"e.printStackTrace();//输出信息而且飘红!!!} }}
而如果有多个异常使用捕获我们又该如何处理呢?
- 多个异常分别处理 。多个异常一次捕获,多次处理 。
try{编写可能会出现异常的代码}catch(异常类型Ae){当try中出现A类型异常,就用该catch来捕获.处理异常的代码//记录日志/打印异常信息/继续抛出异常}catch(异常类型Be){当try中出现B类型异常,就用该catch来捕获.处理异常的代码//记录日志/打印异常信息/继续抛出异常}
例如:public class TryCatchDemo3 {public static void main(String[] args) {//test();test2();}//多个异常一次捕获,多次处理 。public static void test2(){int[] arr = {11, 22, 66, 0};try {//System.out.println(arr[5]);//一旦这个报错,下面的代码就不会执行System.out.println(arr[2]);System.out.println(arr[0] / arr[arr.length-1]);} catch (ArithmeticException e) {System.out.println("除数不为0");}catch (ArrayIndexOutOfBoundsException e) {System.out.println("数组下标越界");}catch (Exception e) {e.printStackTrace();}}//分别处理的方式public static void test() {int a = 10;int b = 0;try {System.out.println(a / b);} catch (ArithmeticException e) {System.out.println("除数不为0");//除数不为0}int[] arr = {1, 2, 3};try {System.out.println(arr[4]);} catch (ArrayIndexOutOfBoundsException e) {System.out.println("数组下标越界");//数组下标越界}}}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 提莫西查拉梅为什么叫“甜茶”?
- “操”什么意思
- champion袖标有几种
- 清代小说<再生缘>陈端生原著 !谁能帮帮我,十分感谢
- 建国西路154号 问路,梅陇新村—>卢湾区业余大学
- “营改增”文化创意服务包括哪些?
- “ip电影”什么意思
- 黄渤将“佟丽娅”说成“佟娅丽”,是口误还是玩笑?
- “伯牙谓世再无知音,乃破琴绝弦,终身不复鼓。”的意思是什么
- “执念有尽,深爱无终。”这句话什么意思?