throwable:异常Throwable的概述以及子类Exception的说明

 2021-07-08 5:15    77  

throwable:异常Throwable的概述以及子类Exception的说明

异常Throwable异常Throwable是整个java异常体系中的总根

throwable:异常Throwable的概述以及子类Exception的说明

下面 分为 两大类 一个是 Error 一个是Exception

其中Error是错误 如服务器崩溃 数据库崩溃等 与代码关联不大

Excpetion中又分为两大类 一个是RuntimeException 另一个则是 非RuntimeException

其中RuntimeException指的则是平常程序员敲代码所犯的错误 造成运行时异常

而非RuntimeException 为编译时异常

JVM处理异常的方法

打印错误信息

Throwable 常用方法

1.getMessage()

2.toSting()

3.printStackTrace()

public class Demo5_Throwable { /** * * A:Throwable的几个常见方法 * a:getMessage() * 获取异常信息,返回字符串throwable。 * b:toString() * 获取异常类名和异常信息,返回字符串。 * c:printStackTrace() * 获取异常类名和异常信息,以及异常出现在程序中的位置。返回值void。 * B:案例演示 * Throwable的几个常见方法的基本使用 */ public static void main(String[] args) { try { System.out.println(1/0); } catch (Exception e) { //Exception e = new ArithmeticException("/ by zero"); //System.out.println(e.getMessage()); //获取异常信息 //System.out.println(e); //调用toString方法,打印异常类名和异常信息 e.printStackTrace(); //jvm默认就用这种方式处理异常 } }} 处理异常方法1

try{} catch{Exception}

try catch finally

这种处理异常的方法不会终止程序

注意点:捕获的异常中 父类异常要向后放 不然如果父类异常为Exception RuntimeException时 后面子类异常的捕获将毫无意义

处理异常方法2

throw 一个异常对象(类的具体实例)

同时在方法上 throws 一个异常类

这种处理异常的方法会终止程序

throws 和 throw 的区别

注意点 :当抛出的对象为RuntimeException 也就是说抛出的异常对象为运行时异常时throwable,此时就算不在方法上写 throws 异常类,编译也不会报错

finally

除了Sytstem.exit(0);以外 ,任何语句都无法跳过finally中的语句throwable!

其功能是为了关闭各种IO流 或者 数据库

面试题

主要解释一下面试题2吧

public class Test1 { /** * * A:面试题1 * final,finally和finalize的区别 * final可以修饰类,不能被继承 * 修饰方法,不能被重写 * 修饰变量,只能赋值一次 * * finally是try语句中的一个语句体,不能单独使用,用来释放资源 * * finalize是一个方法,当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。 * B:面试题2 * 如果catch里面有return语句,请问finally的代码还会执行吗?如果会,请问是在return前还是return后。 */ public static void main(String[] args) { Demo d = new Demo(); System.out.println(d.method()); }}class Demo { public int method() { int x = 10; try { x = 20; System.out.println(1/0); return x; } catch (Exception e) { x = 30; //此时x为30已经包装好给return 接着去看finally了 return x; //当finally结束后 按照原来的包装路径返回 所以返回值为30 } finally { x = 40; //return x; 千万不要在finally里面写返回语句,因为finally的作用是为了释放资源,是肯定会执行的 //如果在这里面写返回语句,那么try和catch的结果都会被改变,所以这么写就是犯罪 //同时要注意finally中的赋值语句毫无意义!!finally存在的意义就是为了关闭各种流 以及对数据库的操作 } }}自定义异常

自定义异常有何意义:只是为了区分异常的名字而已 功能都是由总根父类Throwable来提供

异常小练习

import java.math.BigDecimal;import java.math.BigInteger;import java.util.Scanner;public class Test2 { /** * 键盘录入一个int类型的整数,对其求二进制表现形式 * 如果录入的整数过大,给予提示,录入的整数过大请重新录入一个整数BigInteger * 如果录入的是小数,给予提示,录入的是小数,请重新录入一个整数 * 如果录入的是其他字符,给予提示,录入的是非法字符,请重新录入一个整数 * * 分析: * 1,创建键盘录入对象 * 2,将键盘录入的结果存储在String类型的字符串中,存储int类型中如果有不符合条件的直接报错,无法进行后续判断 * 3,键盘录入的结果转换成int类型的数据,是正确的还是错误的 * 4,正确的直接转换 * 5,错误的要进行对应判断 */ public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一个整数:"); while(true) { String line = sc.nextLine(); //将键盘录入的结果存储在line中 try { int num = Integer.parseInt(line); //将字符串转换为整数 System.out.println(Integer.toBinaryString(num));//将整数转换为二进制 break; //跳出循环 }catch(Exception e) { try { new BigInteger(line); System.out.println("录入错误,您录入的是一个过大整数,请重新输入一个整数:"); }catch (Exception e2) { //alt + shif + z (try catch快捷键) try { new BigDecimal(line); System.out.println("录入错误,您录入的是一个小数,请重新输入一个整数:"); } catch (Exception e1) { System.out.println("录入错误,您录入的是非法字符,请重新输入一个整数:"); } } } } }}小编这里整理了更多相关的学习资料和学习视频

私信我:“学习”,可免费领更多相关学习资料

本文标签:哪些Spring核心嵌套循环详解

原文链接:https://www.xgfox.com/jsyd/609.html

本文版权:如无特别标注,本站文章均为原创。