前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >对方不想和你说话,并向你抛出了个异常。

对方不想和你说话,并向你抛出了个异常。

作者头像
一头小山猪
发布2020-04-10 15:18:34
7780
发布2020-04-10 15:18:34
举报
文章被收录于专栏:微光点亮星辰

Java---异常

Java.lang.Throwable

|----Exception:程序可以处理的异常

|----Error:与虚拟机相关问题,系统崩溃,虚拟机问题,内存不足,内存堆栈溢出……建议程序停止。

异常:程序在运行时出现不正常情况,java对不正常情况进行描述后的对象体现。

-------------------------------------------------

常见的处理方法

|---String getMessage();

|---String toString()

|---void printStackTrace();

(jvm默认的异常处理机制其实就是调用printStackTrace());

-------------------------------------------------

异常的处理:

try { …}

catch(异常类 变量 ) { //处理几个异常就声明几个catch

多个catch块中的异常出现继承关系时,父类catch块要放在子类catch下面

}finally{ …}//非必须,但声明后一定会执行,一般用于释放资源

Eg:数据库异常时无法关闭数据库,可使用finally,对资源的关闭

例外:System.exit(0)系统退出,jvm结束,finally不执行。

------------------------------------------------

异常的声明(throws

编写Demo时,代码可能发生异常

通过throws声明功能可能会出现的异常:

Eg: int div(int a ,int b)throws Exception{

Return a/b;//我们知道b=0时会抛出ArithmeticException;

public static voidmain(String [] args){

try{ …} catch(Exception e){ …}

}

(catch 处理时,最好要有具体的处理形式,例如异常日志文件等)

-------------------------------------

自定义异常:

项目中会出现持有的问题,而这些问题并未被java所描述并封装对象时,可将这些问题进行自定义的异常封装(自定义类继承异常类)

继承异常的原因:

因为异常类和异常对象都被抛出,他们都具备可抛性,这个可抛性是Throwable体系特点,只有这个体系中的类和对象才可以被throws和throw操作

------------------------------

假设:a/b中,除数如果是负数和0都认为是错的异常描述。

class IException extendsException{

//可重写Exception方法;

//定义构造方法;//与普通类继承基类相似构造;

父类把异常信息操作完成了,子类只要在构造时用super(message)传递信息给父类,即可调用父类方法(getMessage())

class Demo{

int div(int a,int b)throwsIException{

if(b<=0)

throw new IException();// 函数内throw 异常,在函数上要

//声明或者在内部处理

return a/b;

}

--------------------

throw和throws的区别:

throws使用在函数上,throw使用在函数内,throws后跟若干个异常类,逗号隔开,throw后跟异常对象。

---------------------------------

异常

|----编译时被检测的异常

|----编译时不被检测,运行时异常(RuntimeException以及其子类)

RuntimeException:

特点:函数内抛出,函数上可不声明,编译通过(不需要让调用者处理,当异常发生,希望程序停止,希望停止程序后,由程序员对代码进行验证

若在函数上声明,调用者可不处理,编译通过。

心得:如果希望某异常发生时程序停止,就让自定义异常继承RuntimeException

-----------------------------------

异常在父类覆盖中的体现:

  1. 1. 子类在覆盖父类时,如果父类的方法抛出异常,那子类的覆盖方法,只能抛出父类的异常或该异常的子类:

class AException extends Exception{

…}

class BException extends AException{

…}

class CException extends Exception{

…}

class Fu {

voidshow()throws AException{…}

}

Class Zi extends Fu{

Voidshow()throws AException ,BException{//不能声明CException}

}

(如果子类真发生其他异常,只能try处理,不能抛出)

------------------------------

  1. 2. 如果父类方法抛出多个异常时,那么子类在覆盖方法时,只能抛出父类异常的子集,即父类若抛出AException,BException,则子类可抛出其中之一或两个。
  2. 3. 如果父类或者接口的方法中无异常抛出,子类在覆盖方法时,不可以抛出异常,只能处理。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-01-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微光点亮星辰 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java---异常
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档