java中处理异常的用什么语句 java中异常的基本控制语句是什么,其作用是什么
各位老铁们,大家好,今天由我来为大家分享java中处理异常的用什么语句,以及java中异常的基本控制语句是什么,其作用是什么的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!
java中异常的处理方法有哪两种
1.检查型异常,这样的异常继承于Excetpion,就是在编译期间需要检查,如果该异常被throw,那么在该异常所在的method后必须显示的throws,调用该method的地方也必须捕获该异常,否则编译器会抛出异常.ejb里的RemoteException是一个这样的异常.来源:考试大
2.运行时异常,就是在运行期间系统出现的异常,该类异常继承于RuntimeException,该类异常在编译时系统不进行检查,如NullPointerExcetpion,NumberFormatException.
3.系统错误,一般是JVM出现异常时抛出的异常,如OutofMemoryError,这样的异常在J2EE开发中是不用关心的.考试大论坛
在J2EE开发中,检查型异常被滥用以至于过一段时间程序员自己都看不懂抛出这样的异常,.里面封装的这些错误信息是干什么用的,更可怕的是有好多有用的信息找不到了.比如SQLException和RemoteException这样的异常我们没必要再进行封装,这样的异常只对我们调试程序有用,而对客户来说它就是一个”系统错误”而已.异常处理有一个简单的原则,你什么时候需要封装自己的检查型异常?就是你很清楚自己抛出这个异常的用途时,比如用户输入用户名和密码要登录,但用户名和密码不匹配,你就要定义一个检查型异常,客户端通过捕获该异常,然后把相应的错误信息反馈给客户.而其它的自己未预期的错误或者异常比如SQLException,只需封装到EJBException中,ejb container会把它的信息追加到RemoteException里,这样客户端捕获RemoteException后把它写到系统日志里,就很容易进行调试。
Java异常的处理
在 Java应用程序中,对异常的处理有两种方式:处理异常和声明异常。
处理异常:try、catch和 finally
若要捕获异常,则必须在代码中添加异常处理器块。这种 Java结构可能包含 3个部分,
都有 Java关键字。下面的例子中使用了 try-catch-finally代码结构。
import java.io.*; public class EchoInputTryCatchFinally{ public static void main(String args[]){ System.out.println(”Enter text to echo:”); InputStreamReader isr= new InputStreamReader(System.in); BufferedReader inputReader= new BufferedReader(isr); try{ String inputLine= inputReader.readLine(); System.out.println(”Read:”+ inputLine);} catch(IOException exc){ System.out.println(”Exception encountered:”+ exc);} finally{ System.out.println(”End.“);}}其中:
try块:将一个或者多个语句放入 try时,则表示这些语句可能抛出异常。编译器知道可能要发生异常,于是用一个特殊结构评估块内所有语句。
catch块:当问题出现时,一种选择是定义代码块来处理问题,catch块的目的便在于此。catch块是 try块所产生异常的接收者。基本原理是:一旦生成异常,则 try块的执行中止,JVM将查找相应的 JVM。
finally块:还可以定义 finally块,无论运行 try块代码的结果如何,该块里面的代码一定运行。在常见的所有环境中,finally块都将运行。无论 try块是否运行完,无论是否产生异常,也无论是否在 catch块中得到处理,finally块都将执行。
try-catch-finally规则:
必须在 try之后添加 catch或 finally块。try块后可同时接 catch和 finally块,但至少有一个块。
必须遵循块顺序:若代码同时使用 catch和 finally块,则必须将 catch块放在 try块之后。
catch块与相应的异常类的类型相关。
一个 try块可能有多个 catch块。若如此,则执行第一个匹配块。
可嵌套 try-catch-finally结构。
在 try-catch-finally结构中,可重新抛出异常。
除了下列情况,总将执行 finally做为结束:JVM过早终止(调用 System.exit(int));在 finally块中抛出一个未处理的异常;计算机断电、失火、或遭遇病毒攻击。
声明异常
若要声明异常,则必须将其添加到方法签名块的结束位置。下面是一个实例:
public void errorProneMethod(int input) throws java.io.IOException{//Code for the method,including one or more method//calls that may produce an IOException}这样,声明的异常将传给方法调用者,而且也通知了编译器:该方法的任何调用者必须遵守处理或声明规则。声明异常的规则如下:
必须声明方法可抛出的任何可检测异常(checked exception)。
非检测性异常(unchecked exception)不是必须的,可声明,也可不声明。
调用方法必须遵循任何可检测异常的处理和声明规则。若覆盖一个方法,则不能声明与覆盖方法不同的异常。声明的任何异常必须是被覆盖方法所声明异常的同类或子类。
异常处理的Java最佳方法
异常处理是Java开发中的一个重要部分。它是关乎每个应用的一个非功能性需求,是为了处理任何错误状况,比如资源不可访问,非法输入,空输入等等。Java提供了几个异常处理特性,以try,catch和finally关键字的形式内建于语言自身之中。Java编程语言也允许你创建新的异常,并通过使用throw和throws关键字抛出它们。事实上,在Java编程中,Java的异常处理不单单是知道语法这么简单,它必须遵循标准的JDK库,和几个处理错误和异常的开源代码。这里北大青鸟将讨论一些关于异常处理的Java最佳实践。
1、为可恢复的错误使用检查型异常,为编程错误使用非检查型错误。
选择检查型还是非检查型异常,对于Java编程人员来说,总是让人感到困惑。检查型异常保证你对错误条件提供异常处理代码,这是一种从语言到强制你编写健壮的代码的一种方式,但同时会引入大量杂乱的代码并导致其不可读。当然,如果你有替代品和恢复策略的话,捕捉异常并做些什么看起来似乎也在理。在Java编程中选择检查型异常还是运行时异常。
2、在finally程序块中关闭或者释放资源
这在Java编程中,是一个广为人知的最佳实践,在处理网络和IO类的时候,相当于一个标准。在finally块中关闭资源,在正常和异常执行的情况下,保证之前和稀缺资源的合理释放,这由finally块保证。从Java7开始,该语言有了一项更有趣的功能:资源管理自动化或者ARM块能实现这一功能。尽管如此,我们仍然要记住在finally块中关闭资源,这是对于释放像FileDescriptors这类,应用在socket和文件编程的情况下的有限资源很重要的。
3、在堆栈跟踪中包含引起异常的原因
很多时候,当一个由另一个异常导致的异常被抛出的时候,Java库和开放源代码会将一种异常包装成另一种异常。日志记录和打印根异常就变得非常重要。Java异常类提供了getCause方法来检索导致异常的原因,这些(原因)可以对异常的根层次的原因提供更多的信息。该Java实践对在进行调试或排除故障大有帮助。时刻记住,如果你将一个异常包装成另一种异常时,构造一个新异常要传递源异常。
4、始终提供关于异常的有意义的完整的信息
异常信息是最重要的地方,因为这是程序员首先看到的第一个地方,这里你能找到问题产生的根本原因。这里始终提供精确的真实的信息。
5、避免过度使用检查型异常
检查型异常在强制执行方面有一定的优势,但同时它也破坏了代码,通过掩盖业务逻辑使代码可读性降低。只要你不过度使用检查型异常,你可以最大限度的减少这类情况,这样做的结果是你会得到更清洁的代码。你同样可以使用Java7的新功能,以移除重复项。
6、将检查型异常转为运行时异常
这是在像Spring之类的多数框架中用来限制使用检查型异常的技术之一,大部分出自于JDBC的检查型异常,都被包装进DataAccessException中,而(DataAccessException)异常是一种非检查型异常。这是Java最佳实践带来的好处,特定的异常限制到特定的模块,像SQLException放到DAO层,将意思明确的运行时异常抛到客户层。
7、记住对性能而言,异常代价高昂
需要记住的一件事是异常代价高昂,同时让你的代码运行缓慢。假如你有方法从ResultSet(结果集)中进行读取,这时常会抛出SQLException异常而不会移到下一元素,这将会比不抛出异常的正常代码执行的慢的多。因此最大限度的减少不必要的异常捕捉和移动,那里没有什么固定的原因。不要仅仅是抛出和捕捉异常,如果你能使用boolean变量去表示执行结果,可能会得到更整洁,更高性能的解决方案。修正错误的根源,避免不必须要的异常捕捉。
Java异常处理时如何捕获异常的。catch里面的语句是怎么写的
try{
//代码代码中通常会出现不知情却在情理中的错误
int age= a.getAge();//如果a对象为空,你却调用它的方法就会报NullPointerException异常
}catch(//异常类型 NullPointerException ne){//获取你可以预知的异常
//异常处理就是你捕获了这个异常你要这个异常进行哪种操作
//一般的操作就是记录到日志里
//然后抛出去或者返回状态
}catch(Exception ex){//这个是所有异常的父类
//因为很多异常是不可预知的
//记录到日志里
//然后抛出去或者返回状态
}
java中异常的基本控制语句是什么,其作用是什么
Java中的控制语句中异常处理语句:try-catch-finally,throw。
异常作用:在Java中,在默认情况下,异常会输出一个错误信息,然后中止程序的执行。为了更好地处理异常情况,程序开发人员通常会在程序中定义异常处理代码块来捕获和处理异常。这样,当异常情况发生时,一个代表该异常的对象会被创建,并在产生异常的方法中被引发。该方法可以选择自己处理异常,也可以抛出该异常。
关于本次java中处理异常的用什么语句和java中异常的基本控制语句是什么,其作用是什么的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。