异常 异常处理

异常的处理
异常的概念
异常指的是运行期间出现的错误,程序开始执行,在执行期内出现的问题。出现了异常过后我们要关注异常的类型 、 异常出现的行号。
在java中,java的异常时java提供的用与处理程序错的一种机制。
错误值得是在程序运行过程中发生的一系列异常事件,比如下标越界、空指针、除数为0
异常处理机制:一旦异常发生过后,使用异常处理机制让程序不会直接中断或者影响虚拟机运行
1
2
3
4
异常的分类
1、Error:称为错误(不是异常)、java虚拟机生成并抛出,虚拟机加错误、动态链接失败之类的等等、程序控制不了、用户也无法控制。jvm的运行环境问题
2、Exceptinon:用户的错误、或者程序无法预见的一些问题。所有异常的f父类、很多个子类,每一个子类都对应到异常情况。一旦出现exception这种异常,需要开发者自己去处理(捕获)
3、Runtime Exception:运行时异常是程序在运行过长中发生的可以被程序员避免的异常。如果你不处理,抛出异常后提示开发要关注
常见的异常:
ClassNotFoundException
IOException
SQL Exception
NoSuchFieldException
RuntimeException
ClassCastException
NullPointerException
UnknownTypeException
IndexOutOfBoundsException
ArithmeticException /算术异常
1
2
3
4
5
6
7
8
9
10
11
12
13
14
在开发过程中的异常先不去处理

异常的执行流程
在方法执行过程中,方法押入到方法栈中,在某一个方法中出现了运行时异常,没有处理这种异常,后边方法的内容无法执行,异常抛给了虚拟机,中断了虚拟机继续运行
方法栈:方法在调用的过程中,先执行的方法后退出
运行流程:
1、main在栈的最底部,method2栈的最顶部,method2抛出一个异常,method2从栈中取出来
2、将异常抛给method1,method1并没有处理这个异常,将异常抛给main方法。此刻method移除栈
3、main方法接收到method1抛出来的异常,main也没有处理这个异常,当前这个异常就会抛给虚拟机,虚拟机就会创建一个异常对象。识别异常分类,直接将异常信息打印到控制台,结束程序。
1
2
3
4
5
6
异常的结构体系
throwable 所有异常的根基类,也可以抛出
Error:表示错误,开发过程中程序无法去控制和处理
Exception:表示异常,开发过程中,可以去进行处理
RuntimeException
SQL Exception

Exception:
检查异常:编译器要求你必须要处理的异常,不处理程序无法运行。当你代码没有运行的时候,编译器就检查出来的问题。
非检查异常:编译器不强制要求处理的异常。虽然在运行中有可能出问题,但是不要求你处理(ClassCastException
NullPointerException)
1
2
3
4
5
6
7
8
9
10
异常的基本用法
捕获异常
语法1:

try{
运行过程中要执行的逻辑代码,这段代码可能会出现问题,捕获异常
}catch(Exception e){//声明一个父类异常,接受一个异常
//提示当前系统出现了什么样的异常
e.printStackTrace();//打印错误信息
}
1
2
3
4
5
6
语法2:
try{

}catch(Exception e){

}catch(Exception e){

}
1
2
3
4
5
语法3 :
try{

}catch(Exception e){

}catch(Exception e){

}finally {

}
1
2
3
4
5
6
7
1、finally 为异常提供了一个统一的出口,使得当前程序在跳转到另外程序的流程之前,能够对程序进行统一的管理。
2、无论try模块中的内r容是否执行,finally代码都执行一次
3、通常我们在fianlly里面要执行的内容是资源的关闭,或者日志的记录

语法4:
try{

}fianaly{

}
1
2
3
申明并抛出异常
在本方法中、如果出现了异常,本方法可以不进行处理,抛给调用者来处理。
将异常一层一层往外抛,在达到虚拟机之前处理好整个程序运行流程不受影响。

throw:将异常进行抛出(动作)
throws:声明将要抛出何种类型的异常(声明)
在catch 方法块中 throw new 异常类型() ,在本方法后面加上 throws 异常类型,表示向上一层抛出,用了throw之后,如果try里面的代码块有异常 ,后面的代码就不会再执行了

重写方法的时候,子类和父类异常问题
1、父类方法没有抛出异常、而子类重写的方法抛出了异常,是不被允许的。编译都通过不了
2、父类抛出了异常,子类重写方法抛出跟父类同样的异常,没有问题
3、父类抛出异常,子类重写方法不抛出异常,编译器能编译通过,不推荐这样写。
4、父类抛出一个Exception,子类可以抛出比Exception小的异常,子类的异常不能比父类的异常大
5、父类抛出异常小于子类的异常,不行,编译报错
6、父类抛出一个Exception。子类抛出多个字异常,编译 通过

自定义异常
输入的年龄大于100岁,性别选择中性
好处:
在团队开发过程中,都是分模块、分功能进行开发的,在项目找那个统一制定自己的异常,对外统一显示内容。
1、在用户发请求进行数据验证的时候,如果数据验证失败,自己抛出自定义异常
2、在开发过程中,遇到某些逻辑上面的问题,判断性别出现中性的时候。java没有提供性别中性异常,自定义
3、系统提供的异常,如果直接给用户,体验不是特别好,包括异常的信息,代码。代码中能抛出去的 异常,用户处理过的异常

1、不管自定义异常还是系统提供的异常,都必须是Throwable的子类
2、写一个检查性的异常,需要写一个类继承Exception
3、写一个运行时异常,需要写一个类继承RuntimeException
---------------------

原文地址:https://www.cnblogs.com/ly570/p/11102425.html

时间: 2024-10-05 22:13:21

异常 异常处理的相关文章

异常处理----使用 try…catch…finally 处理异常

使用 try-catch-finally 处理异常 异常处理是通过try-catch-finally语句实现的. try { ...... //可能产生异常的代码 } catch( ExceptionName1 e ) { ...... //当产生ExceptionName1型异常时的处置措施 } catch( ExceptionName2 e ) { ...... //当产生ExceptionName2型异常时的处置措施 } [finally { ...... //无条件执行的语句 } ] 异

-1-6 java 异常简单介绍 java异常 异常体系 Throwable 分类 throws和throw 异常处理 自定义异常

异常 异常:异常就是Java程序在运行过程中出现的错误. 异常由来:问题也是现实生活中一个具体事务,也可以通过java 的类的形式进行描述,并封装成对象. 其实就是Java对不正常情况进行描述后的对象体现. Throwable |--Error        严重问题,我们不处理. |--Exception |--RuntimeException        运行期异常,我们需要修正代码 |--非RuntimeException 编译期异常,必须处理的,否则程序编译不通过 Exception和

java基础篇---异常处理

认识异常 异常时导致程序中断运行的一种指令流,如果不对异常进行正确的处理,则可能导致程序的中断执行,造成不必要的损失,所以在程序的设计中必须考虑各种异常的发生,并正确的做好相应的处理,这样才能保证程序的正常执行,在java使用一种称为异常处理的错误捕获机制处理. 为了能在程序中处理异常情况,必须研究程序中可能会出现的错误和问题 用户输入错误() 设备错误 物理限制(磁盘满了,) 代码错误(程序方法有可能无法正常执行) 处理异常 异常处理的简单格式 如果在try语句块中的任何代码抛出一个在catc

9 异常处理 操作系统 进程线程 队列+生产消费者模型 进程同步 回调函数

异常处理 异常就是程序运行时发生错误的信号,在python中,错误触发的异常如下 异常的种类: AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError 输入/输出异常:基本上是无法打开文件 ImportError 无法引入模块或包:基本上是路径问题或名称错误 IndentationError 语法错误(的子类) :代码没有正确对齐 IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5] KeyError 试图访

java的异常处理

架构:java的异常处理是一种你丢我捡的架构 处理方法:在该方法加上异常处理语句来处理,另外一种是把异常交给另外的方法来处理 异常的实例对象throwble类: error和exception 前者无法处理,程序直接终止运行,后者异常可以采取措施处理 exception类:arithmeticexception 数学运算产生的错误,例如除以0  :arrayindexoutofboundsexception 数组索引小于0或者是超出数组边界产生的异常:arraystoreexception 保存

[Python基础]008.异常

异常 异常处理 捕获异常 抛出异常 自定义异常 一些常见的异常 异常处理 捕获异常 try/except 与C,java等语言用try/catch来捕获异常相似,Python使用try/except try/except/finally 无论是否有异常都会执行finally下的语句 try/except/else 没有抛出异常时执行else下的语句 代码 try: f = open('data.txt') f.read() print zz print 5/0 except IOError, e

异常处理与MiniDump详解(4) MiniDump

http://blog.csdn.net/vagrxie/article/details/4398721 异常处理与MiniDump详解(4) MiniDump 分类:             [Windows]              2009-07-31 23:18     23631人阅读     评论(12)     收藏     举报 exceptionpointersmicrosoftfunwindowsnull 目录(?)[+] 一   综述 二   基本应用 怎么感知到程序的崩

Python基础(19)_异常处理

一.异常处理 错误和异常: 1.错误的种类: 1)语法错误:这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正 2)逻辑错误: 例如: res1=1/0  .es2=1+'str' 2.异常:异常就是程序运行时发生错误的信号,在python中,错误触发的异常如下: Traceback:y追踪异常的来源 NameError:异常的类型 name 'aa' is not defined: 异常值 3.异常的种类 在python中不同的异常可以用不同的类型(python中统一了类

python基础-异常处理

1.什么是异常 异常可以理解为一个对不正常事情的处理机制 一般情况下,在python中无法正常处理程序时就会发生一个异常 异常处理可以让错误变得更人性化 2.异常处理 捕捉异常可以使用try/except语句 try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理 如果不想在异常发生时结束你的程序,只需在try里捕获它 语法: try: <语句> #运行别的代码 except <名字>: <语句> #如果在try部分引发了'nam