1. 声明异常

    throw: 关键字,用于抛出一个指定的异常对象

    必须写在方法内部必须是Exception或Exception的子类对象

    throws: 用于方法声明上,表示当前方法不处理该异常,提醒调用者处理异常

    方法内部抛出编译器异常
/**
* <h1>方式一: 声明异常</h1>
* throw, throws
* */
public class DeclareException { /**
* <h2>使用 throw 关键字抛出运行时异常</h2>
* */
private static boolean validate01(String name) { if (null == name) {
throw new NullPointerException("name is null...");
} return "qinyi".equals(name);
} /**
* <h2>编译期异常, 必须处理这个异常, 或者是由 throws 继续抛出给上层调用者处理</h2>
* */
private static void validate02(String name) throws EOFException,
FileNotFoundException { if (null == name) {
throw new EOFException("name is null...");
} if (!"qinyi".equals(name)) {
throw new FileNotFoundException("name is not qinyi...");
}
}
}
  1. 捕获异常

    三个关键字:trycatchfinally

    try:该代码块内编写可能产生异常的代码

    catch:用于进行某种异常的捕获并处理

    finaly: 不管代码出现异常与否,都会对该代码块执行
/**
* <h1>方式2: 捕获异常</h1>
* try...catch...finally
* */
@SuppressWarnings("all")
public class CatchException { /**
* <h2>validate01 抛出单个异常</h2>
* */
private static boolean validate01(String name) { if (null == name) {
throw new NullPointerException("name is null...");
} return "qinyi".equals(name);
} /**
* <h2>validate02 抛出多个异常</h2>
* */
private static boolean validate02(String name) { if (null == name) {
throw new NullPointerException("name is null...");
} if ("".equals(name)) {
throw new IllegalArgumentException("name is blank...");
} if (!"qinyi".equals(name)) {
throw new RuntimeException("name is not qinyi...");
} return true;
} /**
* <h2>打开并关闭 Stream</h2>
* */
private static void openAndCloseStream() { Stream<Path> pathStream = null; try {
pathStream = Files.list(Paths.get("/tmp"));
List<Path> paths = pathStream.collect(Collectors.toList());
System.out.println(paths.size());
// ....
} catch (IOException ex) {
ex.printStackTrace();
} finally {
if (null != pathStream) {
pathStream.close();
}
}
} public static void main(String[] args) { // 1. 捕获单个异常
try {
validate01(null);
} catch (Throwable th) {
System.out.println(th.getMessage());
th.printStackTrace();
} // 2.1 捕获多个异常 -- 第一种方法, 多一个异常一次捕获多次处理
try {
validate02("");
} catch (NullPointerException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
} catch (IllegalArgumentException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
} catch (RuntimeException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
} // 2.2 捕获多个异常 -- 第二种方式, 一个 try, 一个 catch
try {
validate02("");
} catch (NullPointerException | IllegalArgumentException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
} // 2.3 捕获多个异常 -- 第三种方式, 定义一个范围更大的父类异常对象
try {
validate02("");
} catch (RuntimeException ex) {
System.out.println(ex.getMessage());
ex.printStackTrace();
}
}
}

最新文章

  1. iOS-App发布证书的申请与使用
  2. linux 下C语言学习路线
  3. 一个App需要的东西
  4. Android开发中 .9.png格式图形设计:
  5. HoloLens开发手记 - Unity之Locatable camera 使用相机
  6. php中将url中的参数含有%20进行转换或解码
  7. mysql从一个表中拷贝数据到另一个表中sql语句
  8. Floyd 算法 打印路径模板
  9. BMP文件格式详解
  10. oracle创建数据库到2%不动问题
  11. SQL注入 手注与联合注入
  12. gevent多协程运用
  13. Beta冲刺! Day4 - 砍柴
  14. 十天精通CSS3(6)
  15. PHP脚本运行时间
  16. js修改日期
  17. Python 对象模型 -- (转)
  18. STL sort “invalid operator &lt;”
  19. springboot成神之——监视器
  20. POJ 2195 Going Home 【二分图最小权值匹配】

热门文章

  1. Clion在一个cmake项目中运行多个main函数
  2. (性能测试笔记)逻辑IO和物理IO的区别
  3. GP232RL国产USB串口如何兼容FT232RL开发资料
  4. leetcode91解码
  5. OS-lab5
  6. NodeJS增删改查的获取方法
  7. Axure的认识与使用
  8. appium遇到的问题
  9. uni-app学习笔记之----不同平台,独立设置
  10. C语言标准 —— C89(C90)、C99、C11、C17、C2X