最近的一个内部表决系统开发过程中,
发现对异常处理还存在一些模棱两可的地方,
所以想着整理一下
主要涉及到:
1.try catch finally throws throw 的使用和解读
2.自定义异常的使用
3.常见的运行异常

/**
* Java 异常处理
* try catch finally throws throw
* @author Ma San
*
*/
public class ExceptionTest {

// 函数可能发生异常时 两种处理办法
// 1.try catch 捕获并处理异常
// 2.throws 声明异常
/**
* try catch 捕获并处理异常
*/
public void function1(int index){
try {
// 以下代码抛出异常,并且被捕获
if(--index<0) throw new Exception("index out of 0");
} catch (Exception e) {
// catch 内处理异常
// TODO: handle exception
}
}

/**
* throws 声明异常
* @throws Exception
*/
public void function2(int index) throws Exception{
// 以下代码抛出异常
if(--index<0) throw new Exception("index out of 0");
}

// 比较 try catch 和 throws 的区别
// 前者会捕获异常并处理,后者只是声明会发生的异常,并不能捕获也不能处理
// throws声明异常,如果被抛出,最终也会被try catch 捕捉处理
// 如果程序中没有try catch 那么 该线程被终止,如果是主线程则程序会被终止

// try catch finally throws throw 语法规则和比较

// 1.try catch :捕获异常
// 2.finally : 任何情况下都会执行的代码
// 3.throws: 声明可能会发生的异常
// 4.throw: 抛出异常

//语法规则:
//(1):try代码块不能单独存在,后边至少有一个catch或者finally代码块
// 以下代码会发生编译错误
public static void main(String args[]) throws Exception{
try{
//代码
}
}
//(2):try代码快后边可以没有catch也可以有多个catch,可以没有finally也可以有一个finally
// 其中,如果catch 和 finally要共存,则finally 必须出现在catch的后面

// (3): try 代码块和catch、finally代码块是不同的作用域
// 在try代码块声明的变量 catch 和 finally不能访问
try
{
// 在try代码块中声明变量
int num = 0;

}
catch (Exception e)
{
num++; // 不合法,编译错误
}finally{
num = 9; // 不合法,编译错误
}

// 定义在try代码块外
int num = 0;
try
{

}
catch (Exception e)
{
num++; // 合法
}finally{
num = 9; // 合法
}

(4): try 后面包含多个catch的时候,JVM会一次和各个catch代码块声明的异常类型匹配
如果异常对象为某个异常类型或者其子类实例就执行这个catch代码块,不再执行其他的。
例:
try
{
code;//假设可能抛出FileNotFoundException
}
catch (SQLException)
{
System.out.println("SQLException");
}
catch (IOException)
{
System.out.println("IOException");
}
catch (Exception)
{
System.out.println("Exception");
}
发生异常控制台会输出 “Exception”;

(5)throw 语句后面不允许紧跟其他语句,因为这些语句永远不会被执行

}

转载于:https://www.cnblogs.com/maxm/p/6632264.html

Java 异常处理 try catch finally throws throw 的使用和解读(一)相关推荐

  1. java异常处理机简答题,【简答题】JAVA 语言如何进行异常处理,关键字: throws,throw,try,catch,finally 分别代表什么意义?...

    [简答题]JAVA 语言如何进行异常处理,关键字: throws,throw,try,catch,finally 分别代表什么意义? 更多相关问题 用蒸汽进行设备管线吹扫时,应将被吹扫的设备管线,相应 ...

  2. Java 异常处理 try catch

    一:try catch是什么 try catch是java程序设计中处理异常的重要组成部分 异常是程序中的一些错误,有些异常需要做处理,有些则不需要捕获处理,异常是针对方法来说的,抛出.声明抛出.捕获 ...

  3. JAVA 语言如何进行异常处理,关键字: throws,throw,try,catch,finally分别代表什么意义? 在try块中可以抛 出异常吗?...

    Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类, 并提供了良好的 接口.         在 Java中,每个异常都是一个对象,它是 Throwable 类或其它子类的实例.当一个方 ...

  4. JAVA异常处理、自定义异常、throws关键字与throw关键字、运行时异常

    异常捕捉, try-catch语句. package YH;public class Thundering {public static void main(String[] args) {try { ...

  5. Java基础学习总结(86)——Java异常处理机制Exception抛出异常时throw和throws用法详解

    什么时运行时异常?什么是非运行时异常? 通俗的讲: 运行时异常:就是编译通过,运行时就崩了,比如数组越界. 非运行时异常:就是编译不通过,这时就得必须去处理了.不然就没法运行了. 全面的讲: Thro ...

  6. Java异常处理和设计

    Java异常处理和设计 在程序设计中,进行异常处理是非常关键和重要的一部分.一个程序的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度.试想一下,如果一个项目从头到尾没有考虑过异常 ...

  7. java 6 损坏,Java 异常处理六

    Java 异常处理六[@more@] "throw"语句 所有的方法都使用"throw"语句来抛出一个异常.Throw语句需要一个单独throwable对象,这 ...

  8. java异常处理之throw, throws,try和catch

    转自 http://blog.csdn.net/zhouyong80/article/details/1907799  程序运行过程中可能会出现异常情况,比如被0除.对负数计算平方根等,还有可能会出现 ...

  9. 多态的概念、对象上下转型、多态的应用、异常(异常概念、异常分类、java异常处理机制、try...catch...finally、throw和throws、自定义异常)

    多态的概念: 多态性是指同一个操作作用于某一类对象,可以有不同的解释,产生不同的执行结果. 多态存在的三个必要条件: ① 需要存在继承或实现关系 ② 同样的方法调用而执行不同的操作.运行不同代码(重写 ...

最新文章

  1. get占位符传多个参数_未知环境下的Lidar概率占位栅格图(Occupancy Grid Map) Python代码实现...
  2. POI LastRowNum and PhysicalNumberOfRows
  3. 配置使用EF6.0常见的一些问题及解决方案
  4. 每天一个linux命令(58):telnet命令
  5. .NetCore中IdentityServer使用nginx-proxy的一次排错经历
  6. .Net Core AA.FrameWork应用框架介绍
  7. jQuery.ajax success 与 complete 区别
  8. 免费的定时任务托管 clock.sh
  9. 搞了这么久的产品,终于看清了真相
  10. awk批量修改文件名,awk用法
  11. Go、Java 和 Rust 的比较
  12. python调用函数怎么错_python调用函数失败是什么原因
  13. 重新安装MySQL5.7.21教程_CentOS6.9安装mysql5.7.21教程
  14. 向一个文件中写入字符,可以规定每行字数
  15. 局域网部署文档协同办公系统:Windows + onlyoffice + dzzoffice
  16. html音乐播放器怎么有黑边框,播放不能满屏有黑边怎么办,怎么剪切视频黑边,剪切黑边...
  17. 图像识别利用计算机对图像进行,图像识别方法
  18. 中国创新“先锋”企业系列报道
  19. 解决“该jenkins实例似乎已离线”
  20. 计算机基础西南大学,西南大学计算机基础.docx

热门文章

  1. 【转】Mac本地生成SSH Key 的方法
  2. iOS:Cocoa编码规范 -[译]Coding Guidelines for Cocoa
  3. domino从Excel导入数据
  4. ubuntu下安装JDK和netbeans
  5. C++内存管理——指针数组
  6. 为什么闲鱼不能搜索python_Python 分析后告诉你闲鱼上哪些商品抢手?
  7. 在c++中qsort()排序函数的使用qsort函数应用大全
  8. 一文教你掌握 ZooKeeper 核心知识
  9. 自定义sql_【PL/SQL 自定义函数】 常用场景
  10. 在 Gitee 上使用 GPG公钥(Beta版)