- 浏览: 1149892 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (411)
- Java Foundation (41)
- AI/机器学习/数据挖掘/模式识别/自然语言处理/信息检索 (2)
- 云计算/NoSQL/数据分析 (11)
- Linux (13)
- Open Source (12)
- J2EE (52)
- Data Structures (4)
- other (10)
- Dev Error (41)
- Ajax/JS/JSP/HTML5 (47)
- Oracle (68)
- FLEX (19)
- Tools (19)
- 设计模式 (4)
- Database (12)
- SQL Server (9)
- 例子程序 (4)
- mysql (2)
- Web Services (4)
- 面试 (8)
- 嵌入式/移动开发 (18)
- 软件工程/UML (15)
- C/C++ (7)
- 架构Architecture/分布式Distributed (1)
最新评论
-
a535114641:
LZ你好, 用了这个方法后子页面里的JS方法就全不能用了呀
页面局部刷新的两种方式:form+iframe 和 ajax -
di1984HIT:
学习了,真不错,做个记号啊
Machine Learning -
赵师傅临死前:
我一台老机器,myeclipse9 + FB3.5 可以正常使 ...
myeclipse 10 安装 flash builder 4.6 -
Wu_Jiang:
触发时间在将来的某个时间 但是第一次触发的时间超出了失效时间, ...
Based on configured schedule, the given trigger will never fire. -
cylove007:
找了好久,顶你
Editable Select 可编辑select
http://docs.oracle.com/javase/tutorial/essential/exceptions/definition.html
Throwable Class and Its Subclasses:
Java中方法的调用构成方法调用栈,方法调用栈中方法的顺序与方法的被调用顺序是相反的。
Java中程序的任何一处抛出Throwable对象后,都是采用按方法调用栈逐级上溯(即与方法调用顺序相反的顺序逐级上溯)的机制来搜寻可以处理被抛出的Throwable对象的方法(注意不管是Checked Exceptions 还是 Unckecked Exceptions,都是使用这种机制处理的)。如果找到了,则异常对象在该方法中被处理;如果搜寻所有方法直至程序入口都未能找到一个可以处理该Throwable对象的方法,则程序退出。如下面两个图所示:
The call stack.
Searching the call stack for the exception handler.
Checked Exceptions & Unckecked Exceptions:
Checked Exceptions:
any subclass of Exception (or Exception itself), excluding class RuntimeException and its subclasses.
checked means they will be checked at compiletime it self,so Checked exceptions must be explicitly caught or propagated(只有两条路:使用try-catch-finally捕获它,或者在方法声明中throws它)。
Unckecked Exceptions:
RuntimeException, Error, and their subclasses
unchecked means you need not handle the unchecked exceptions and they will be handled by the JVM.
什么时候使用checked exception,什么时候使用unchecked exception?
Here's the bottom line guideline: If a client can reasonably be expected to recover from an exception, make it a checked exception. If a client cannot do anything to recover from the exception, make it an unchecked exception.
对checked exception,什么时候应该抛出,什么时候应该捕获?Catch or Propagate Exceptions?
You might be wondering whether you should catch or propate exceptions thrown in your program. It depends on the situation. In many applications you can't really do much about the exception but tell the user that the requested action failed. In these applications you can usually catch all or most exceptions centrally in one of the first methods in the call stack. You may still have to deal with the exception while propagating it though (using finally clauses). For instance, if an error occurs in the database connection in a web application, you may still have to close the database connection in a finally clause, even if you can't do anything else than tell the user that the action failed. How you end up handling exceptions also depends on whether you choose checked or unchecked exceptions for your application. There is more on that in other texts in the error handling trail.
throws和throw的区别
引用
throw用来在语句中抛出一个异常,而throws用在方法声明中,表示这个方法会抛出某类异常。
throw语法:throw <异常对象>
在方法声明中,添加throws子句表示该方法将抛出异常。
throws语法:[<修饰符>]<返回值类型><方法名>([<参数列表>])[throws<异常类>]
其中:异常类可以声明多个,用逗号分割。
区别:
throws可以单独使用;
而对throw:
如果语句中throw抛出的是checked exception,则该checked exception必须被捕获(try-catch[-finally])或者抛出(方法声明中throws);所以可以认为,使用throw抛出checked exception的时候throw不可以单独使用,必须和try-catch[-finally] 或 throws配合使用;
如果语句中throw抛出的是unchecked exception(RuntimeException,Error,及他们的子类),unchecked exception是不需要你在代码中做处理的;可以认为,使用throw抛出unchecked exception的时候throw可以单独使用。
在方法的一个分支中(主干分支或任意一个条件分支,条件分支如if分支、else分支),throw一个Throwable对象,则如果该分支中throw子句后还存在代码块,则这些代码块会被认为是Unreachable,无法编译通过。throw语法:throw <异常对象>
在方法声明中,添加throws子句表示该方法将抛出异常。
throws语法:[<修饰符>]<返回值类型><方法名>([<参数列表>])[throws<异常类>]
其中:异常类可以声明多个,用逗号分割。
区别:
throws可以单独使用;
而对throw:
如果语句中throw抛出的是checked exception,则该checked exception必须被捕获(try-catch[-finally])或者抛出(方法声明中throws);所以可以认为,使用throw抛出checked exception的时候throw不可以单独使用,必须和try-catch[-finally] 或 throws配合使用;
如果语句中throw抛出的是unchecked exception(RuntimeException,Error,及他们的子类),unchecked exception是不需要你在代码中做处理的;可以认为,使用throw抛出unchecked exception的时候throw可以单独使用。
//存在三个分支:main主分支、if分支、else分支 public static void main( String[] args ) throws Throwable { if(true) { throw new Throwable("err"); //System.out.println("ddd"); //不可达 } else { System.out.println(""); //可达 } throw new NullPointerException("null err"); //可达 //m1(); //不可达 }
Sources:
Checked or Unchecked Exceptions?
http://tutorials.jenkov.com/java-exception-handling/checked-or-unchecked-exceptions.html
Basic try-catch-finally Exception Handling in Java
http://tutorials.jenkov.com/java-exception-handling/basic-try-catch-finally.html
发表评论
-
J2SE Evolution
2013-04-11 15:39 1187Java 7 New Features Java SE 7 ... -
未完 Java: IO & NIO(new I/O)
2013-01-11 20:56 2058适用: event and data-driven apps ... -
未完 java设计: naming convention | 命名规范
2012-11-20 16:45 2133应该遵循的规范: 类/接口/属性名,使用名词或形容词 ... -
未完 Java: enum 枚举
2012-11-19 20:29 1823http://stackoverflow.com/que ... -
Java多线程之 concurrent 并发包
2012-11-01 07:47 2027Java Tutorials -> Concur ... -
未完 Java Tips & Tricks & Notes
2012-09-12 10:00 1133Hidden Features of Java: h ... -
未完 Java Socket
2012-09-12 08:42 1021Java SocketJava SocketJava Sock ... -
Java For-each Loop & Iterable | 增强型For循环和Iterable接口
2012-09-11 21:50 2066增强型For循环没什么好说的,Just see link ... -
未完 Java Collections | 容器
2012-09-06 11:35 1840Sources: http://docs.oracle.com ... -
Java object Initialization (class Instantiation) | 对象的初始化(即类的实例化)
2012-09-03 09:12 3009类实例即对象 ... -
未完Java class&interfac 's Loading, Linking and Initializing | 类与接口的加载、链接和初始化
2012-08-31 19:01 1676JVM装载一个类的时候,首先检查他有没有父类,如果有父类则装载 ... -
未完 java Static 总结
2012-08-31 18:47 1406static可以用来修饰: 字段 Fields 方法 Meth ... -
未完 JVM Runtime Data Areas & Java Memory Model | 内存分配模型 & Java数据存储
2012-08-31 18:43 1892Java虚拟机内存分配模型 需精读:Chapter 5 of ... -
Java Data Types & Literals | 数据类型 和 字面量
2012-08-30 18:12 3948Java数据类型划分: OR http:// ... -
未完 Variables 变量 (Instance/Class/Local)
2012-08-29 10:59 1708Local/Instance/Class Variables ... -
未完 Regular Expressions | 正则表达式
2011-08-25 11:43 1531Extended Regular Expression ... -
java Date(util.Date/sql.Date/sql.Timestamp/sql.Time) & Oracle DATE Type 时分秒 精度问题
2011-05-17 09:32 3968遇到的问题描述: 数据库为Oracle,其jdbc驱动为ojd ... -
Java byte code (bytecode)
2011-05-04 02:55 3890keys: bytecode, byte code, opco ... -
Java Classloading Mechanism : ClassLoader & ASM & 动态字节码增强
2011-04-21 13:29 2430Setting the class path: http:// ... -
class literal & instance.getClass() & Class.forName(String className)
2011-04-20 12:33 2341常用的几种取得Class类实例的方式: 1 class lit ...
相关推荐
### Java中的异常处理详解 #### 一、异常基础概述 在Java编程中,异常处理是一项重要的机制,用于处理运行过程中可能发生的错误情况。通过合理的异常处理,可以显著提高程序的健壮性和可用性。 ##### 1. 异常概念...
Java的异常类都继承自`java.lang.Throwable`,主要分为两种类型:Error和Exception。Error是系统级的错误,如虚拟机错误、内存不足等,一般开发者无法处理,而Exception是应用程序可以预见并处理的异常。 声明异常...
Java异常处理是编程中至关重要的一个部分,它用于在程序运行时处理错误和不寻常的情况。在Java中,异常是一种事件,它中断了程序的正常流程。Java异常处理提供了五种关键字来帮助开发者有效地管理异常:`try`, `...
总的来说,`ArithmeticException`是Java中常见的运行时异常之一,通过合理的异常处理和输入验证,我们可以避免这类异常的发生,提高程序的健壮性。理解并妥善处理这种异常对于编写稳定且可靠的Java程序至关重要。
自定义异常是在Java中通过继承`java.lang.Throwable`或其子类(如`Exception`或`Error`)来实现的。通常,我们选择继承`Exception`类,因为它用于表示程序可以恢复的错误,而`Error`则用于表示系统级的严重问题,...
除了基本的异常处理,Java还提供了异常链(Exception Chaining),允许一个异常实例引用另一个异常,这样可以保留更详细的错误信息。还有`assert`关键字,用于在开发阶段进行断言检查,确保代码的正确性。 总之,...
Java 异常机制包括 Error、Exception、检查异常、运行时异常、异常处理和 throws 关键字等几个方面。 Error 是 Java 异常机制中的基类,表示编译时或者系统错误,例如虚拟机相关的错误、系统崩溃等。Error 无法恢复...
在这个“java 异常 问题收集 Exception”主题中,我们将深入探讨Java异常处理的基本概念、常用类以及最佳实践。 1. 异常的概念与分类: Java中的异常是程序运行时出现的不正常情况,通常会导致程序中断。Java将...
在Java编程中,异常处理(Exception Handling)是确保程序健壮性的重要机制。它允许程序员在遇到错误情况时,能够优雅地处理问题而不是让程序突然崩溃。本项目中,"JAVA Exception Handling & UI Design" 涉及了如何...
Java 异常详解 Java 异常是指在程序运行中出现的违背指定正常流向的事件。异常可以分为两大类:-checked 异常和 unchecked 异常。Checked 异常必须在编译时捕捉并处理,而 unchecked 异常可以在编译时忽略,但是在...
Java 异常处理习题 Java 异常处理是 Java 编程语言中的一种重要机制,用于处理程序在运行时可能出现的错误或异常情况。下面是关于 Java 异常处理的习题和知识点总结: 一、Java 异常处理关键字 * Java 中用来抛出...
### Java异常详解 #### 1. `java.lang.NullPointerException` `NullPointerException`是当程序尝试访问一个为`null`的对象实例的字段、调用其方法或构造函数时抛出的异常。这种异常通常发生在程序员错误地假设某个...
在Java编程语言中,异常处理是一项至关重要的机制,它允许程序员优雅地处理程序运行时可能出现的问题,从而确保程序的稳定性和可靠性。Java异常捕捉通过使用try、catch、finally和throw关键字来实现,这些关键字帮助...
如果java提供的系统异常类型不能满足程序设计的需求,那么可以设计自己的异常类型。 从java异常类的结构层次...另外一种问题是程序运行错误,java定义为Exception,这种情况下,可以通过程序设计调整来实现异常处理。
首先,我们来看看基础的`Exception`类,它是所有Java异常的根类。任何抛出的异常都直接或间接地继承自`Exception`。在处理时间异常时,最常见的可能是`IllegalArgumentException`,这个异常会在方法接收到非法参数时...
1. `ArithmeticException`:当计算中出现除以零、非法运算等错误时,会抛出此类异常。 2. `ArrayIndexOutOfBoundsException`:当尝试访问数组的索引超出了数组的实际长度时,会抛出此类异常。 3. `...
在Java中,异常(Exception)被用来表示程序运行时发生的错误或不正常情况。异常并不等同于错误,它是程序设计的一部分,允许我们优雅地处理错误,而不是让程序突然崩溃。 异常的概念: 1. 异常是一种事件,当它...
Java异常 Exception类及其子类详解 Java异常Exception类及其子类是Java语言中异常处理的核心部分。异常是指程序在执行过程中出现的非正常情况,例如除数为零、数组索引越界、类型转换错误等。Java语言所有的异常都...
Java 异常的对象来自两个来源:一是 Java 语言本身定义的一些基本异常类型,二是用户通过继承 Exception 类或者其子类自己定义的异常。异常的对象可以是 Java 运行时环境自动抛出的系统生成的异常,也可以是程序员...
在 Java API 中已经定义了许多异常类,这些异常类分为两大类,错误 Error 和异常 Exception。Java 异常体系结构呈树状,其层次结构图如图 1 所示: 图 1 Java 异常体系结构 Throwable 类是所有异常和错误的超类,...