【Java异常】处理异常

news/2024/12/21 22:50:15/
一:异常的处理:抓抛处理
过程一:"抛":程序在正常执行的过程中,一旦出现异常,就会在异常代码处生成一个对应异常类的对象并将此对象抛出一旦抛出对象以后,其后的代码不再执行
过程二:"抓":可以理解为异常的处理方式:① try - catch - finally② throws
二:try-catch-finally的使用
  try{//可能出现异常的代码}catch(异常类型1 变量名1){//处理异常的方式1}catch(异常类型2 变量名2){//处理异常的方式2}....finally{//一定会执行的代码}

举例:

public class ExceptionTest1 {@Testpublic void test1(){String str = "123";str = "abc";int num = 0;try{num = Integer.parseInt(str);}catch (NumberFormatException e){System.out.println("出现数值转化异常,不要着急..........");}catch (NullPointerException e){System.out.println("出现空指针异常了,不要着急..........");}catch (Exception e){System.out.println("出现异常了,不要着急.........");}System.out.println(num);System.out.println("hello----2");}
}

运行结果如下:

 

 还有两种常见的异常处理方式:

e.printStackTrace();

public class ExceptionTest1 {@Testpublic void test1(){String str = "123";str = "abc";int num = 0;try{num = Integer.parseInt(str);}catch (NumberFormatException e){
//          System.out.println("出现数值转化异常,不要着急..........");e.printStackTrace();}catch (NullPointerException e){System.out.println("出现空指针异常了,不要着急..........");}catch (Exception e){System.out.println("出现异常了,不要着急.........");}System.out.println(num);System.out.println("hello----2");}
}

运行结果:

e.getMessage() ----->返回一个字符串

 System.out.println(e.getMessage());

public class ExceptionTest1 {@Testpublic void test1(){String str = "123";str = "abc";int num = 0;try{num = Integer.parseInt(str);}catch (NumberFormatException e){
//          System.out.println("出现数值转化异常,不要着急..........");
//            e.printStackTrace();System.out.println(e.getMessage());}catch (NullPointerException e){System.out.println("出现空指针异常了,不要着急..........");}catch (Exception e){System.out.println("出现异常了,不要着急.........");}System.out.println(num);System.out.println("hello----2");}
}

 运行结果:

 注意:catch中的异常类型声明的顺序

举例:将上文代码的catch的异常顺序交换

 

综上所述 :catch中的异常类型如果没有子父类关系,则谁声明在上,谁声明在下无所谓catch中的异常类型如果满足子父类关系,则要求子类一定声明在父类的上面,否则报错

=================================我是分割线=============================================
总结:1.finally是可选的2.使用try将可能出现异常代码包装起来,在执行过程中,一旦出现异常,就会生成一个异常类的对象根据此对象的类型,去catch中进行匹配3.一旦try中的异常对象匹配到某一个catch时,就会进入catch中进行异常处理一旦处理完成,就跳出当前的try—catch结构(在没有写finally的情况)继续执行其后的代码4.catch中的异常类型如果没有子父类关系,则谁声明在上,谁声明在下无所谓catch中的异常类型如果满足子父类关系,则要求子类一定声明在父类的上面,否则报错5.常用的异常对象处理的方式:① String getMessage()② printStackTrace()6.在try结构中声明的变量,再出了try结构以后,就不能别调用了
体会:使用try-catch-finally处理编译时异常,使得程序在编译就不在报错,但是运行时任可能报错先当与我们使用try-catch-finally将一个编译时可能出现异常,延迟到运行时出现

感谢观看!!!


http://www.ppmy.cn/news/5274.html

相关文章

Windows下NCNN环境配置(VS2019)

Windows下NCNN环境配置(VS2019) 本文修改自:Windows下ncnn环境配置(VS2019) 一、下载VS2019并安装 1、下载地址:https://visualstudio.microsoft.com/zh-hans/vs/ 2、下载后安装工作负载(安装以…

详解OpenCV的线段绘制函数line()

函数line()用于在图像上绘制圆形。 函数line()利用两点确定一条直线的原理在图像中绘制出一条线段。 C原型如下: void cv::line(InputOutputArray img,Point pt1,Point pt2,const Scalar & color,int thickness 1,int lineType LINE_8,int shift 0)Python原…

数字化转型必读书籍:27个案例让小白也能搞懂以中台战略主导的数字化转型产品建设

各位茶馆的读者朋友们大家好,一转眼《中台产品经理宝典》一书已经上市了2年半,在这期间创造了近2万册的销售记录,并多次冲上各大网站的销售记录。 就在今年双十一还创造了当当网细分类目销量第71名的成绩,这对一本已经出版了2年半…

Java码客过去的一周年

入坑伊始 2021年12月20日 我本身就是一名计算机科学与技术的大学生,应该也算是行内的科班出身,但是在2021年12月20日之前,也就是离19届大学生考研差不多一年的时间,那时候有一周的SSM网站编程实训课程,惊讶的是虽然学…

软件加密保护:Mirage License Protector v5 注册版

Mirage License Protector v5.1.0 适用于许多编译器 License Protector 是一个 DLL / COM exe,几乎可以与 所有编译器一起使用:C、C#、.NET、Delphi、VB6 和 VB.NET, 32 位和 64 位的 Java 哪种产品适合我? 选择许可证保护器 应…

Java中的异常、IO与NIO面试题

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏:Java面试题…

windows密码获取凭证

目录 一,Windows HASH hash windows HASH简介 二,Windows认证基础 Windows本地认证 LM-HASH LM-HASH简介 LM-HASH生成原理 Mysql数据库密码破解 1. MYSQL数据库文件类型 2. Mysql加密方式 一,Windows HASH hash Hash,…

前端CSS Flex布局8大重难点知识,收藏起来吧

2009年,W3C提出了一种新的方案—-Flex布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。 Flex布局将成为未来布局的首选方案。这也是学习前…