异常的捕获与处理

20 篇文章 0 订阅
订阅专栏

异常的捕获与处理

处理异常

组合方式:try…catch、try…catch…finally、try…finally

public class TestMain {
    public static void main(String[] args) {
        try {
            System.out.println(5 / 0);
        } catch(ArithmeticException e) {
            System.out.println("出现算数异常:");
             e.printStackTrace();   //输出异常的完整信息
        }finally{
            System.out.println("运行结束");
        }
    }
}

异常处理流程

所有异常类都是Throwable子类

Error与Exception的区别?

  • Error:指的是JVM错误,即程序还没有执行,用户无法进行处理。
  • Exception:指的是程序运行中产生的异常,用户可以处理。

请解释Java中的异常处理流程:

这里写图片描述

  1. 程序运行过程中出现异常后,JVM自动根据异常类型实例化一个与之类型匹配的异常类对象。
  2. 产生异常对象后,判断是否有异常处理。
    • 有:由try语句捕获产生的异常类实例化对象,再与每一个catch进行比较。如果匹配,则处理异常。
    • 没有:交由JVM进行默认处理,输出异常信息,结束程序调用。
  3. 无论异常处理是否匹配,都要向后执行finally语句。如果之前处理过异常,那么程序自然结束,否则交由JVM默认处理。

使用Exception处理异常

public class TestMain {
    public static void main(String[] args) {
        try {
            System.out.println(5 / 0);
        } catch(Exception e) {
            System.out.println("出现balabala异常:");
             e.printStackTrace();   //输出异常的完整信息
        }finally{
            System.out.println("运行结束");
        }
    }
}

使用须知:

  • 存在多个catch时,捕获范围大的异常一定得放在捕获范围小的异常之后,否则程序编译错误。
  • Exception虽然比较方便,但所有异常都会按照同一种方式进行处理。异常分开处理更好。

Exception与RuntimeException的区别?并列举几个常见的RuntimeException

  • Exception是RuntimeException的父类
  • Exception所定义的异常必须要被处理,而RuntimeException的异常可以选择性处理。
  • 常见RuntimeException:ArithmeticException、NullPointerException、ClassCastException(转换异常类)

throws关键字

throws关键字主要用于方法声明,当方法中出现异常后,交由被调用处进行处理。

class MyMath {
    //此方法里产生的异常交给被调用出进行处理
    public static int div(int x, int y) throws Exception {
        return x / y;
    }
}
public class TestMain {
    public static void main(String[] args) {
        try {
            System.out.println(MyMath.div(10, 0));  //这里调用
        }catch(Exception e) {
            System.out.println("出错了!");
            e.printStackTrace();
        }

    }
}

由以上例子可以发现:

  • 调用了具有throws声明的方法后,不管操作是否会出现异常,都必须进行异常处理。
  • throws声明的方法所产生的异常的范围,必须必catch中的小。
  • 主方法如果抛出异常,则由JVM进行处理。(但主方法不应该用throws声明)

throw关键字

使用throw可以手动的抛出异常的实例化对象。

public class TestMain {
    public static void main(String[] args) {
        try {
            throw new Exception("自定义异常");   //抛出一个自定义异常
        }catch(Exception e) {
            e.printStackTrace();
        }
    }
}

throw与throws的区别?

  • throw:指的是手动的抛出一个异常类对象。
  • throws:声明方法时使用, 表示此方法在调用时必须处理异常。
Educoder -Java面向对象 - Java语言之异常处理类(第2关:异常捕获处理 - 文本统计)
weixin_51160138的博客
02-19 3511
package step2; import java.io.*; public class CatchException { public static void main(String[] args) { BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); String str; /********** Begin *********/
异常捕获处理
qq_43711904的博客
07-11 1026
1、异常是程序中断执行的指令流。在出现错误之后,整个程序将不会按照既定的方式进行执行,而是中断执行。为了保证程序出现非致命错误后程序依然可以正常完成,所以就需要一个完善的异常处理机制。 2、格式 try{ // 可能出现异常的语句 }[catch(异常类型 异常对象){ // 异常处理 }catch(异常类型 异常对象){ // 异常处理 }catch(异常类型 异常对...
异常捕获处理
qq_57683680的博客
07-13 3163
异常处理
Crash异常捕获处理
09-07
通过【NSSetUncaughtExceptionHandler】机制捕获处理app的异常
Python学习笔记(十)——–Python异常捕获处理及自定义异常
01-21
与在Java中一样的,Python中的异常也是一个对象,当程序发生异常,程序会抛出响应的异常对象,我们需要去捕获这个异常并解决他,防止异常导致程序停止。 这里是一段防爬虫文本,读者请忽略。本文最先由Baldwin_...
详解Android全局异常捕获处理
09-02
主要为大家介绍了Android全局异常捕获处理,为什么要进行捕获处理,如何进行捕获处理,想要了解的朋友可以参考一下
捕获异常处理
11-22
ExceptionRecordManager用来将发生且未被捕获异常保存本地以方便在设备未接入追踪BUG,也可稍作修改上传服务器。 PermissionManager为单例类,一般在继承Application的自定义类重写onCreate(),调用如下代码: ...
谈谈前端异常捕获与上报
02-25
一个经过了大量测试及联调的项目在有些候还是会有十分隐蔽的bug存在,这种复杂而又不可预见性的问题唯有通过完善的监控机制才能有效的减少其带来的损失,因此对于直面用户的前端而言,异常捕获与上报是至关重要的...
异常捕获处理.
09-26
异常捕获处理.关于java技术方面参考。
语法5:try - 捕获异常
davidksatan的博客
06-13 2102
Python学习-try 捕获异常:基础格式、结构子句、except子句、else子句、finally子句、结构嵌套
如何捕获异常
愿我们能划破黑暗,抵达黎明
11-18 2377
介绍捕获异常如何使用
Java异常捕获处理
欢子的博客
05-02 1万+
一、异常是什么? 异常的定义:异常是导致一个程序终端的指令流,一旦出现之后程序就立即退出。 例如:除数为0 int a = 10; int b = 0; System.out.println(a + "/" + b + "=" + a/b); System.out.println("运算结束");程序运行结果:Exception i
Java 异常捕获处理详解(一)
热门推荐
wei_zhi的博客
10-17 2万+
一、异常的产生异常是程序之中导致程序中断的一种指令流,异常一旦出现并且没有进行合理处理的话,那么程序就将中断执行。 下面,通过两个程序来进行异常产生问题的对比。 (1)不产生异常的程序:public class Test { public static void main(String args[]) { System.out.println("1、除法计算开始。");
python异常捕获处理
最新发布
08-12
异常捕获处理是在程序运行过程中遇到错误,通过捕获异常并采取相应的处理措施,使程序能够继续执行而不中断。 在Python中,可以使用try-except语句来捕获异常。try块中放置可能会出现异常的代码,而except块中定义对异常处理逻辑。 下面是一个简单的示例: ```python try: # 可能会出现异常的代码 x = 10 / 0 except ZeroDivisionError: # 处理 ZeroDivisionError 异常 print("除数不能为零") ``` 在上面的代码中,try块中的代码尝试进行除法运算,如果除数为零,就会抛出ZeroDivisionError异常。而except块中的代码会捕获这个异常,并输出相应的提示信息。 除了捕获特定的异常类型,还可以使用except块来捕获所有类型的异常,例如: ```python try: # 可能会出现异常的代码 x = 10 / 0 except: # 处理所有类型的异常 print("发生了异常") ``` 在这种情况下,无论抛出什么类型的异常,都会被except块捕获处理。 除了使用except块来处理异常,还可以使用finally块来定义无论是否发生异常都需要执行的代码。例如: ```python try: # 可能会出现异常的代码 x = 10 / 0 except ZeroDivisionError: # 处理 ZeroDivisionError 异常 print("除数不能为零") finally: # 无论是否发生异常都会执行的代码 print("程序执行完毕") ``` 在上面的代码中,无论是否发生异常,finally块中的代码都会执行。 通过合理地使用try-except语句,可以帮助我们处理程序运行可能出现的异常,增加程序的健壮性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • C++正则表达式(regex_match、regex_search与regex_replace) 119467
  • Vue子组件的显示与隐藏 55531
  • WPF样式(Style)入门 52391
  • C#事件中sender的小用法 43658
  • +=与=+的区别 43121

分类专栏

  • MySQL 1篇
  • Git 1篇
  • 学习Oracle数据库 5篇
  • Java 20篇
  • Oracle数据库 5篇
  • C# 3篇
  • C++ 2篇
  • 设计模式 2篇
  • Linux 2篇
  • WPF 2篇
  • WindowMediaPlayer开发 5篇
  • Web 3篇
  • Hadoop 1篇
  • JVM 2篇
  • 面试知识点 2篇
  • SpringMVC 4篇
  • Chrome扩展程序开发 2篇
  • JUnit 1篇
  • Spring Boot 4篇
  • 数据结构与算法 7篇
  • Vue 2篇
  • 随笔 3篇
  • Web安全 2篇

最新评论

  • +=与=+的区别

    m0_63083222: 你这就错了呀 a +=1 --> a= (a+1) a =+ 1 --> (a= a)+1 这样能看得懂吧 就是a先赋值 赋值之后再进行 +1 计算 而a已经赋值了,这个+1的计算并没有变量去接受结果 所以a =+ 1 结果就是 a=a

  • C++正则表达式(regex_match、regex_search与regex_replace)

    BonjourDurant: 确实恶心

  • C++正则表达式(regex_match、regex_search与regex_replace)

    喜欢打篮球的普通人: 文章怎么突然成VIP了??????

  • HTML页面中文乱码问题

    孤独伴半生: 我成功了!谢谢

  • C++正则表达式(regex_match、regex_search与regex_replace)

    action_taker: 谢谢分享!

大家在看

  • 家居商城系统 128
  • 02-DHCP原理与配置 827
  • visio绘制直线
  • GE WES5123-2600 伺服驱动模块
  • LeetCode 845. 数组中的最长山脉

最新文章

  • 43. 字符串相乘
  • 11. 盛最多水的容器
  • 9.回文数
2021年9篇
2020年2篇
2019年9篇
2018年45篇
2017年10篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

两个鬼故事梓字配什么字起名好孩子生辰起名杨姓女宝宝起名2020姓张姓贾起名史姓女孩起名霹雳游侠2008开淘宝网店的步骤无限之美剧空间影院单日票房破4亿李字起名女宝宝鲁能亚冠套博鳌易学的起名字商标起名软件免费版2021年牛姓谢起名字大全男孩御宝psp秋叶原之旅三个字房地产公司起名塑料制品公司起名用字大全古代名字大全男孩起名12月1日是什么星座女尊之我可能是大佬输入法没有了白锦瑟墨肆年免费阅读完整版小说郁金香花语和寓意高岸为谷免费起名测试打分结果网站鬼妈妈电影闯将新生儿起名女人免费少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

两个鬼故事 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化