为了账号安全,请及时绑定邮箱和手机立即绑定

Throwable常用方法&自定义异常

标签:
Java

1.1 Throwable常用方法
String getMessage()  返回此 throwable 的详细消息字符串
String toString()  返回此 throwable 的简短描述
void printStackTrace()  打印异常的堆栈的跟踪信息
1.1.1 案例代码六:

package com.itheima_01;/* * Throwable的常用方法:String getMessage() String toString() void printStackTrace()  * */public class ExceptionDemo4 {public static void main(String[] args) {try {System.out.println(2 / 0);} catch (ArithmeticException e) {// TODO Auto-generated catch blocke.printStackTrace();}}private static void method() {try {System.out.println(2 / 0);} catch(ArithmeticException e) {//String getMessage() : 原因//System.out.println(e.getMessage());//String toString()  类型和原因//System.out.println(e.toString());//void printStackTrace():类型原因和位置e.printStackTrace();}//System.out.println("hello");}}

1.2 finally的概述和应用场景

finally使用格式:try{}catch(异常类型 异常变量){}finally{   //释放资源的代码}

1.2.1 案例代码七:

 package com.itheima_01;import java.io.FileWriter;import java.io.IOException;/* *  finally:组合try...catch使用,用于释放资源等收尾工作,无论try...catch语句如何执行,finally的代码一定会执行 *  *  try { *          有可能出现问题的代码; *  *  } catch(异常对象) { *          处理异常; *  } finally { *          释放资源; *          清理垃圾; *  } *  */public class ExceptionDemo5 {public static void main(String[] args) {//method();FileWriter fw = null;try {System.out.println(2 / 0);fw = new FileWriter("a.txt");fw.write("hello");fw.write("world");//System.out.println(2 / 0);fw.write("java");//fw.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {//释放资源try {if(fw != null) {fw.close();}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}private static void method() {try {System.out.println(2 / 1);} catch(ArithmeticException e) {System.out.println("除数不能为0");} finally {System.out.println("清理垃圾");}}}

1.3 编译时异常&运行时异常
A: 编译时期异常:是Exception的子类,非RuntimeExcpetion的子类,在编译时期必须处理
B:RuntimeException和他的所有子类异常,都属于运行时期异常。NullPointerException,ArrayIndexOutOfBoundsException等都属于运行时期异常.
运行时期异常的特点:
方法中抛出运行时期异常,方法定义中无需throws声明,调用者也无需处理此异常
运行时期异常一旦发生,需要程序人员修改源代码.
1.3.1 案例代码八:

package com.itheima_01;import java.io.FileWriter;import java.io.IOException;/* * 异常的分类:运行时期异常:RuntimeException的子类就是运行时期异常,在编译时期可以自由选择处理或者不处理编译时期异常:是Exception的子类,非RuntimeExcpetion的子类,在编译时期必须处理 */public class ExceptionDemo6 {public static void main(String[] args) {//System.out.println(2 / 0);//String s = null;//System.out.println(s.length());try {FileWriter fw = new FileWriter("a.txt");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

1.4 自定义异常
需求:写一个方法,接受考试成绩,如果考试成绩的范围在0-100之间则属于正常,否则属于异常
1.4.1 案例代码九:
当成绩不在0~100范围内,抛出一个运行时异常或者编译时异常,阻止程序继续向下执行

     package com.itheima_01;/* * 需求:写一个方法,接受考试成绩,如果考试成绩的范围在0-100之间则属于正常,否则属于异常 * * throws:处理异常的一种方式,把异常抛出,由调用者来处理 * throw:制造异常的方式,并且结束方法 * * 注意:如果抛出(throw)的是编译时期异常,必须在方法声明处抛出(throws) * * 如何自定义一个异常类呢? * 非常简单,写一个类去继承Exception或者RuntimeException,然后实现多个构造即可 * *  */public class ExceptionDemo7 {public static void main(String[] args) {/*boolean flag = checkScore(-10);System.out.println(flag);*/try {checkScore(110);} catch (Exception e) {//System.out.println(e.getMessage());e.printStackTrace();}//checkScore(110);}/*        public static boolean checkScore(int score) {//判断考试成绩是否符合范围,如果不符合则返回falseif(score < 0 || score > 100) {return false;}//符合return true;}*/public static void checkScore(int score) throws Exception {if(score < 0 || score > 100) {throw new RuntimeException("考试成绩不符合要求");//throw new Exception("考试成绩不符合要求");}System.out.println("考试成绩符合要求");}}

1.4.2 案例代码十:
我们也可以自定义一个编译时异常或者运行时异常来抛出:

 package com.itheima_01;public class MyException extends /*RuntimeException*/ Exception{public MyException() {super();// TODO Auto-generated constructor stub}public MyException(String message) {super(message);// TODO Auto-generated constructor stub}/*public MyException() {super();}public MyException(String s) {super(s);}*/}
package com.itheima_01;/* * 需求:写一个方法,接受考试成绩,如果考试成绩的范围在0-100之间则属于正常,否则属于异常 * * throws:处理异常的一种方式,把异常抛出,由调用者来处理 * throw:制造异常的方式,并且结束方法 * * 注意:如果抛出(throw)的是编译时期异常,必须在方法声明处抛出(throws) * * 如何自定义一个异常类呢? * 非常简单,写一个类去继承Exception或者RuntimeException,然后实现多个构造即可 * *  */public class ExceptionDemo7 {public static void main(String[] args) {/*boolean flag = checkScore(-10);System.out.println(flag);*/try {checkScore(110);} catch (Exception e) {//System.out.println(e.getMessage());e.printStackTrace();}//checkScore(110);}

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消