首页 >> 生活

出现内部错误(对计算机进行重镜像出现内部错误)

2022年04月24日 20:46:03 生活 50 投稿:轻抚紫风

一、异常分类

二、异常的声明与抛出

1.异常的声明

2.异常的抛出

三、异常的捕获

1. 捕获异常--try-catch

2. 捕获多个异常--try-catch-catch-...

3. 再次抛出异常

4. finally 子句

一、异常分类出现内部错误

异常对象都继承自 Throwable,

Error: 描述了 Java 运行时系统的内部错误和资源耗尽错误。在应用程序代码中不应该抛出这个类型的异常。

RuntimeException: 由编程错误导致的异常

IOException: IO相关异常

Java 语言规范将继承 Error 类、 RuntimeException 类的所有异常称为非检查型异常。所有其他异常检查型异常。

二、异常的声明与抛出1.异常的声明

如果遇到了无法处理的情况,Java *** 可以声明抛出一个异常。 *** 不仅需要告诉编译器将要返回什么值,还要告诉编译器有可能发生什么错误。

以下是 FileInputStream 的一个真实示例:

// 在文件存在时,返回一个文件输入流,在文件不存在时,会抛出一个文件不存在异常

public FileInputStream(String name) throws FileNotFoundException{

...

}

声明异常的场景:

调用了一个抛出检查型异常的 *** ,例如调用FileInputStream构造 *** 。

检测到一个错误,并且利用 throw 语句抛出一个非检查型异常。

程序出现错误,如除零、数组越界异常的。

Java 虚拟机或运行库出现内部错误。

一个 *** 声明抛出多个异常:

public Image loadImage(String path)throws FileNotFundException,EOFException{

...

}

不需要声明从Error继承的异常,任何代码都可抛出那个异常,我们无法控制。

2.异常的抛出

当遇到一些异常情况,无法继续执行下去时,需要抛出异常。

// 在 *** 内部需要抛出异常时,需要在 *** 首部声明异常。

public void method() throws Exception{

...

throw new Exception();

}

抛出异常的步骤:

找到一个合适的异常类

创建这个类的一个对象

将对象抛出

三、异常的捕获

1. 捕获异常–try-catch

要想捕获一个异常,需要设计 try/catch 语句块

try{

code

more code

more code

}catch(ExceptionType e){

handler for this type

}

如果 try 语句块中的任何代码抛出了catch子句指定的一个异常类,那么:

程序将跳过try语句块的其余代码

程序将执行catch子句中的处理器代码

如果try语句中的代码没有抛出异常,程序将跳过catch子句

如果 *** 中的任何代码抛出了catch中没有声明的异常类型,那么这个异常就不会被捕获。

异常传递技巧:

要捕获你能处理的异常

继续传播你不能处理的异常

要传递异常,就必须在 *** 声明异常

2. 捕获多个异常–try-catch-catch-…

在一个try语句中可以捕获多个异常类型,并对不同类型的异常做出不同的处理。要为每一个异常类型使用一个单独的catch子句:

try{

...

}catch (FileNotFundException e){

handler code

}catch (UnknowHostException e){

handler code

}catch (IOException e){

handler code

}

可使用 e.getMessage() 获取异常描述信息

在Java7及以上版本,可使用同一catch子句中捕获多个异常:

使用场景:当出现一种以上的异常,并且异常的处理流程相同时使用。

try{

...

}catch (FileNotFundException | UnknowHostException e){

// 这里的异常变量e,隐式的被final修饰,不可修改。

handler code

}catch (IOException e){

handler code

}

3. 再次抛出异常

再次抛出异常:可以在catch中抛出一个异常,通常需要改变异常的类型时,需要这样处理。

try{ ...}catch (Exception e){ throw new RuntimeException(e.getMessage);}4. finally 子句

作用:不管是否有异常被捕获,finally代码块,都将被执行,所以常用来释放资源。

FileInputStream in = new FileInputStream(...);

try{

more code

}catch (IOException e){

exception handler code

}finally{

in.close();

}

执行情况分析:

未发生异常:先try后finally

发生异常,被捕获:先try,发生异常时catch,

catch处理中出现异常,跳过catch后续处理,执行finally,并将异常返回给调用者。

catch处理中未出现异常,执行完catch代码,最后执行finally

发生异常,未被捕获:先try,后finally,并将异常返回给调用者。

注意不要再finally中使用return返回,会发生预想不到的错误。

5. try-with-Resources 语句

try代码块执行结束时,会自动调用close *** ,等同于自动释放资源。

在try()中的资源类,必须实现AutoCloseable接口或Closeable的类,才可使用。

try(FileInputStream fis = new FileInputStream(...)){

...

}

版权声明:
本文内容由互联网用户自发贡献,该文观点仅代表作者本人,因此内容不代表本站观点、本站不对文章中的任何观点负责,内容版权归原作者所有、内容只用于提供信息阅读,无任何商业用途。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站(文章、内容、图片、音频、视频)有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至353049283@qq.com举报,一经查实,本站将立刻删除、维护您的正当权益。
tags:

关于我们

九五百科知识网每天更新各类百科知识问答,维新百科提供精准知识问答,行业知识问答,各种百科小知识解答,以及生活常识问答。学知识,必须九五百科网!

最火推荐

小编推荐

联系我们


Copyright © 2020-2022 锐萌镇雪策划 · 网站地图 · 内容地图 · XML地图 ·吉林锐萌网络科技有限公司 版权所有 备案:吉ICP备2023000282号-5