Java之异常处理

在我们编程时经常会出现各种各样的错误和问题,对于那些编译通过但是运行出现的错误我们一般称为:异常

异常的概念

异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序
程序运行——>遇到异常——>程序中断运行

异常处理

Java编程语言使用异常处理机制为程序提供了错误处理的能力

Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws

try—catch块

try-catch的结构如下:

try {
	// 代码段(此处不会产生异常)
} catch (异常类型 ex) {
	// 对异常进行处理的代码段
}

对于try-catch捕获异常课分三种情况:
①没有捕获异常
则程序将不执行catch内的代码

②捕获到异常且匹配catch内异常类型
程序捕获到异常,且匹配catch中的异常类型,则会执行相应catch内的语句,并在执行完catch内语句后继续执行程序

 

catch块内的处理语句

①用户自定义输出语句
System.err.println(“出现异常”);
②调用方法输出异常信息

catch语句块的数量可以有多个,因此当触发多种异常时:
①排列catch 语句的顺序:先子类后父类
②发生异常时按顺序逐个匹配
③只执行第一个与异常类型匹配的catch语句

常见异常类型

算数异常:ArithmeticException
空指针异常:NullPointerException
数组越界异常:ArrayIndexOutOfBoundsException
索引越界异常:IndexOutOfBoundsException
类型转换异常:ClassCastException
输入类型不匹配:InputFormatException
输入输出异常:IOException
SQL异常:SQLException
非法参数异常:IllergalArgumentException
数字格式化异常:NumberFormatException
类未找到异常:ClassNotFoundException

finally块

常常会在try-catch后面加上finally块,无论产不产生异常finally中的语句必定会执行,因此finally常用于关闭资源,其使用形式如下:

try {
	// 代码段(此处不会产生异常)
} catch (异常类型 ex) {
	// 对异常进行处理的代码段
}finally{	
	//执行语句
}
// 验证try-catch-finally的执行顺序
int a = 6;
int b = 0;
try{
	int c = a / b;
}catch(ArithmeticException e)(
	System.err.println("分母不能为0");
	return;
}finally{
	System.err.println("欢迎下次使用!");
}

// 程序执行结果为:分母不能为0
//				  欢迎下次使用

throws声明异常
throws声明某个方法可能抛出的各种异常,多个异常用逗号隔开
对于throws抛出的异常,有两种处理方式:
①调用者处理异常
②调用者继续声明异常,其中main()方法声明的异常有Java虚拟机处理

抛出异常
除了系统自动抛出异常外,有些异常需要程序员自行抛出
可以利用throw和throws声明抛出异常

Throwable是java所有异常的父类,其中Error:仅靠程序本身无法恢复的严重错误 ,Exception:由Java应用程序抛出和处理的非严重错误

// 默认年龄为0-100岁,超出则抛出异常
public class Person {
    private String name;
    private  int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age)throws Exception {
        if(age>=0&&age<=100){
            this.age = age;
        }else{
            throw new Exception("年龄必须在1到100之间!");
        }
    }
    public void print(){
        System.out.println(this.name+"今年"+this.age+"岁");
    }
}
// 测试类
public class Test {
    public static void main(String[] args) {
        Person person = new Person();
        person.setName("李四");
        try {
            person.setAge(120);
            person.print();
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

自定义异常

自定义异常步骤如下:

// 自定义年龄异常
public class AgeException extends Exception {
    public AgeException() {
    }

    public AgeException(String message) {
        super(message);
    }
}
// person类
public class Person {
    private String name;
    private  int age;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age)throws AgeException {
        if(age>=0&&age<=100){
            this.age = age;
        }else{
            throw new AgeException("年龄必须在1到100之间!");
        }

    }
    public void print(){
        System.out.println(this.name+"今年"+this.age+"岁");
    }
}
// 测试类
public class Test {
    public static void main(String[] args) {
        Person person = new Person();
        person.setName("李四");
        try {
            person.setAge(101);
            person.print();
        }catch (AgeException e){
            e.printStackTrace();
        }
    }
}

处理异常的原则

①异常处理与性能
②异常只能用于非正常情况
③不要将过于庞大的代码块放在try中
④在catch中指定具体的异常类型
⑤需要对捕获的异常做处理

谢谢观看!!希望喜欢的朋友关注,点赞。作者会继续发布Java面向对象编程教程!!

转载于: https://blog.csdn.net/jiandanbuguo/article/details/107595663

zhenS1mple
关注 关注
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java之异常
weixin_55787308的博客
08-03 730
当JDK 的异常类型不能满足程序的需要时,可以自定义异常类。使用自定义异常的步骤。
(十一):Java异常的捕获顺序(多个catch)
lukuijun1981的专栏
02-28 1958
[code="java"]import java.io.IOException; public class ExceptionTryCatchTest { public void doSomething() throws IOException{ System.out.println("do somthing"); } public static void main(Strin...
Java多个异常的捕获顺序(多个catch)
hijk7的博客
05-07 511
Java多个异常的捕获顺序(多个catch)
Java异常的捕获顺序(多个catch)
10年职场两茫茫,35岁凄凉奈若何
10-24 281
Java异常的捕获顺序(多个catch)
java 捕获异常顺序_Java异常的捕获顺序(多个catch
weixin_42721619的博客
02-13 741
importjava.io.IOException;public classExceptionTryCatchTest {public void doSomething() throwsIOException{System.out.println("do somthing");}public static voidmain(String[] args){ExceptionTryCatchTest ...
java异常处理的简单练习
09-02
Java异常处理是编程至关重要的一个环节,它用于在程序执行过程处理错误和不寻常的情况。在Java异常处理通过使用try-catch-finally语句块和异常类来进行。以下是对给定代码的详细解释: 1. **异常类的继承**...
java全局异常统一处理
最新发布
11-13
,使用Java异常处理机制实现全局异常统一处理是最常见的方式。 在Java异常处理机制,当一个方法抛出异常时,该异常将被传递到调用该方法的方法,直到找到能够处理该异常的代码为止。在这个过程Java使用...
Java学习笔记之异常处理
08-26
Java学习笔记之异常处理 Java学习笔记之异常处理Java编程语言的一种重要机制,用于处理程序出现的异常情况。异常是指程序在执行过程出现的非正常情况,例如数组下标越界、算术运算异常、空指针异常等。在...
Java异常处理和设计
01-27
因此,如何高效简洁地设计异常处理是一门艺术,本文下面先讲述Java异常机制最基础的知识,然后给出在进行Java异常处理设计时的几个建议。若有不正之处,请多多谅解和指正,不胜感激。以下是本文的目录大纲:一.什么...
Java的异常和处理机制实例详解
08-26
Throwable类是Java异常类型的顶层父类,任何一个对象只有是Throwable类的实例,它才是一个异常对象,才能被异常处理机制识别。JDK内建了一些常用的异常类,我们也可以自定义异常。 非检查异常包括Error和...
Java有多个异常, 如何确定捕获顺序(多个catch),先从上到下执行,判断异常的大小,如果包含捕到异常,就进入这个catch,后面的就不再执行
mhx123456789的博客
07-24 654
Java有多个异常, 如何确定捕获顺序(多个catch),先从上到下执行,判断异常的大小,如果包含捕到异常,就进入这个catch,后面的就不再执行
多个catch()异常处理顺序验证
m0_49665279的博客
10-16 2465
try--catch理解: 当需要处理catch()处理异常时,没有继承关系的两个异常处理顺序随意,具有继承关系的两个异常先处理子异常,在处理父异常,任意一个catch()执行后,同级catch()均不在执行。 此时代码块 1 2可以互换,但代码块3必须在代码块2后面,此时路径有问题,报异常文件不存在; package com.ExceptionTest; import java.io.FileInputStream; import java.io.FileNotFoundException; i
Java_异常体系
平平无奇程序媛
01-31 107
Java_异常体系
java catch块顺序问题
beOkWithAnything
11-29 603
public class ExceptionTryCatchTest { public void doSomething() throws IOException{ System.out.println("do somthing"); } public static void main(String[] args){ ...
Java异常处理语句的执行顺序
Java开发日常
06-12 480
finally 之前虚拟机被终止运行(System.exit(0))的话,finally 的代码就不会被执行。跳过try剩下的语句,执行catch语句,然后执行finally语句。此时执行顺序是,先执行try语句然后执行finally语句。不一定,以下情况finally 的代码不会被执行。跳过try剩下的语句,然后执行finally。会在return之前执行finally语句。程序所在的线程死亡。
究极异常处理逻辑——多层次异常的处理顺序
M_Love_U的博客
08-01 771
究极异常处理逻辑——多层次异常的处理顺序
Java异常
m0_48895748的博客
08-01 557
Java异常
java异常处理机制
m0_37914211的博客
07-12 521
来源:http://www.importnew.com/26613.html简单介绍:Java的异常可以是函数的语句执行时引发的,也可以是程序员通过throw 语句手动抛出的只要在Java程序产生了异常,就会用一个对应类型的异常对象来封装异常,JRE就会试图寻找异常处理程序来处理异常。异常分类:Java标准库内建了一些通用的异常,这些类以Throwable为顶层父类。Throwable又派生...
java 多个try_Java多个异常的捕获顺序(多个catch)
weixin_36039452的博客
02-12 4189
Java代码importjava.io.IOException;publicclassExceptionTryCatchTest{publicvoiddoSomething()throwsIOException{System.out.println("dosomthing");}publicstaticvoidmain(String[]args){ExceptionTry...
Java异常处理机制详解
"异常处理原则在JAVA编程至关重要,它涉及到如何有效地管理和恢复程序运行时遇到的错误。本文主要探讨了JAVA异常处理机制,包括异常处理的基本概念、异常类的层次结构以及异常的处理方式异常处理机制是Java...
写文章

热门文章

  • scala函数之函数作为参数及返回值 1693
  • Java入门循环练习(for,while,do....while) 542
  • hadoop之hbase安装 482
  • spark读取json文件 478
  • Java循环练习(多重循环,break,continue) 454

最新评论

  • Scala面向对象编程

    向彪-blockchain: 进我的收藏夹吧~

最新文章

  • spark读取json文件
  • spark UDF UDAF UDTF
  • spark-sql经典50题
2020年40篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家玻璃钢公牛雕塑湖北佛像玻璃钢雕塑多少钱长春广场玻璃钢雕塑厂家乌当区玻璃钢雕塑泉州玻璃钢雕塑多少钱定做玻璃钢雕塑厂报价单商场通道天花美陈石家庄优质玻璃钢雕塑生产基地上海户外商场美陈采购玻璃钢雕塑维护方案丰台区商场美陈哪家公司好吉林玻璃钢雕塑介绍嘉峪关公园玻璃钢雕塑哪家好昔阳县商场美陈标识校园玻璃钢景观雕塑定做钟祥玻璃钢圆门头雕塑河南欧式玻璃钢雕塑市场禅城玻璃钢卡通雕塑河源公园摆件玻璃钢雕塑盐城设计玻璃钢雕塑厂家河南玻璃钢花盆花器浙江特色商场美陈价格玻璃钢海豚雕塑艺术造型加工杭州组合式玻璃钢雕塑摆件大型校园玻璃钢景观雕塑设计景观玻璃钢彩绘雕塑定做价格通道商场美陈批发宜宾玻璃钢雕塑设计北京艺术商场美陈售价陕西大型玻璃钢雕塑定做价格香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化