java异常基础整理

1、try-catch

e.printStackTrace(); 会打印出方法的调用痕迹,如此例,会打印出异常开始于TestException的第16行,这样就便于定位和分析到底哪里出了异常

2、使用异常类的父类进行catch

FileNotFoundException是Exception的子类,使用Exception也可以catch住FileNotFoundException

3、多异常捕捉办法1

catch (FileNotFoundException e) {
    System.out.println("d:/LOL.exe不存在");
    e.printStackTrace();
} catch (ParseException e) {
    System.out.println("日期格式解析错误");
    e.printStackTrace();
}

多异常捕捉办法2:另一个种办法是把多个异常,放在一个catch里统一捕捉

catch (FileNotFoundException | ParseException e) {}
//这种方式从 JDK7开始支持,好处是捕捉的代码更紧凑,不足之处是,一旦发生异常,不能确定到底是哪种异常,需要通过instanceof 进行判断具体的异常类型
if (e instanceof FileNotFoundException)
    System.out.println("d:/LOL.exe不存在");
if (e instanceof ParseException)
    System.out.println("日期格式解析错误");

4、finally:无论是否出现异常,finally中的代码都会被执行

5、throw

method2中需要进行异常处理
但是method2不打算处理,而是把这个异常通过throws抛出去
那么method1就会接到该异常。 处理办法也是两种,要么是try catch处理掉,要么也是抛出去。
method1选择本地try catch住 一旦try catch住了,就相当于把这个异常消化掉了,主方法在调用method1的时候,就不需要进行异常处理了

package exception;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

public class TestException {

    public static void main(String[] args) {
        method1();

    }

    private static void method1() {
        try {
            method2();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

    private static void method2() throws FileNotFoundException {

        File f = new File("d:/LOL.exe");

        System.out.println("试图打开 d:/LOL.exe");
        new FileInputStream(f);
        System.out.println("成功打开");

    }
}

原文地址:https://www.cnblogs.com/lijingran/p/9048773.html

时间: 2024-11-07 20:31:28

java异常基础整理的相关文章

关于JAVA面向对象基础整理以及个人的理解(适合初学者阅读)

JAVA的基础语法等都跟C有很大的相似之处,所以这里就不多啰嗦了.直接从数组开始. 数组: 1.声明 int [] a; 在声明的过程中,并没有分配空间给数组.我们可以在声明的同时,用new来分配相应的空间 int [] a = new int[100]; 这里开辟了一个空间为100大小的数组,内存分配也完成了. 我们可以在声明的同时也确定元素个数 int [] a = new int[]{1,3,5,7,9}; 面向对象(重点) class Human{ int height; void br

Java 异常基础 Exception

版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 1. 引子 try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解.不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单.听话.不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案.也不许执行代码看真正答案哦.如果你的答案是正确,那么这篇文章你就不用浪费时间看啦. [java] view plaincopyprint? <span s

Java异常基础Exception

异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的异常.因而,Java异常都是对象,是Throwable子类的实例,描述了出现在一段编码中的 错误条件.当条件生成时,错误将引发异常. Java异常类层次结构图: 图1 Java异常类层次结构图 在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出).Throwable 指定代码中可用

Java异常笔记整理

参考书籍:Head First Java 1.假设某方法是别人写在某个类里面的 2.而此时你根本就不知道这个方法是否有风险(比如服务器出故障会使程序受到影响): 3.那最好的方法应该就是,在调用这个类的方法时,加上可能发生异常的处理方案,未雨绸缪. 关键字:try……catch,throws,throw,finally try……catch其实就是给编译器的一个信号,表示你已经注意到了这个异常并开始着手进行应对: 编译器需要程序员try包裹住可能发生异常的代码,再通过catch去处理 Runti

java 异常基础知识以及一些面试题讲解

java是面向对象设计语言,所以异常在java中也封装了成类,而我们只要知道如何处理异常就可以, 异常概述 异常:异常就是Java程序在运行过程中出现的错误. 异常由来:问题也是现实生活中一个具体事务,也可以通过java 的类的形式进行描述,并封装成对象.其实就是Java对不正常情况进行描述后的对象体现 异常分类 程序的异常:Throwable 严重问题:Error 我们不处理.这种问题一般都是很严重的,比如说内存溢出. 问题:Exception 编译期问题:不是RuntimeException

Java 异常基础知识总结

RuntimeException类是Exception类的子类,它叫做运行时异常,Java中的所有运行时异常都会直接或者间接地继承自RuntimeException类. RuntimeException Java中凡是继承自Exception,而不继承自RuntimeException类的异常都是非运行时异常. Exception在程序中必须使用try--catch进行处理:而RuntimeException可以不使用try--catch进行处理,但是如果有异常产生,则异常交给JVM(java虚

Java异常知识整理_处理异常时的性能开销

1.首先列两个从别的地方看到的说法: try-catch代码段会产生额外的性能开销,或者换个角度说,它往往会影响JVM对代码进行优化,所以建议仅捕获有必要的代码段,尽量不要一个大的try包住整段的代码:与此同时,利用异常控制代码流程,也不是一个好主意,远比我们通常意义上的条件语句(if/else.switch)要低效. Java每实例化一个Exception,都会对当时的栈进行快照,这是一个相对比较重的操作.如果发生的非常频繁,这个开销可就不能被忽略了. 2.关于这个结论的一些论证 原文地址:h

Java正则表达式基础整理

(一)正则表达式及语法简介 String类使用正则表达式的几个方法: 正则表达式支持的合法字符: 特殊字符: 预定义字符: 方括号表达式: 圆括号表达式:用于将多个表达式组成一个子表达式,可以使用或运算符“|”,比如正则表达式:"(aa|bb|cc)"就表示匹配"aa"."bb"."cc"三个字符串中的其中一个. 边界匹配符: 贪婪.勉强.占有模式的数量标识符: (二)Java正则表达式的简单用法 两个关键类:(1)Patte

Java异常实践事项

在大学项目开发中, 你有没发现自己做的项目总是出现bug,不仅仅出现bug,而且很难根据异常信息找到异常源.我当时也是非常懊恼, 可怕的是不知道怎么维护... 软件Java异常需要理解基础的知识, 在实战中较好的处理异常.Java异常基础知识 .tryCatchFinally语句块  本节总结Java异常在实践中的相关事项 1. 在Finally中清理资源或者使用Try-With-Resource语句       不要在try中关闭资源.因为一旦发生异常, 将无法正常关闭资源.以下代码给出二种处