java的学习中我们总会遇到对一些异常处理,经过自己在网上查询相关的内容,找到一些知识和大家分享。
先说throw,它是一种控制程序流程的特殊方法而已。没有相应的catch的话,可以中止当前的方法继续执行。
这个不做具体的说明,我们重点说一下try/catch和throws的区别与联系
throws在声明方法时候,如果不声明throws的话,那么一般的Exception都要在这个方法中终结。所以他必须有相应的catch处理编译时的一场来避免错误的发生。当声明了throws之后,异常将会被抛出,就像是石头被丢出去一样。但有些异常不能捕捉,这时候就要用到try/catch了。
try/catch可以这样理解,如果throws相当于职业介绍的中介,那么try/catch就是倒霉的打工仔。为什么这么说呢?那是因为,throws只告诉了编译器方法可能产生异常问题,并把问题抛给了try/catch,让try/catch来负责捕获异常。这样看来try/catch就是拿个网兜在那里接石头了。
throws Exception是写在方法后面的,属于契约式编程,就是告诉编译器本方法可能会抛出该类型异常,由方法的调用者去处理。try catch就不用说了,就是那么个意思。
在你编写的程序中,有些语句可以会发生异常,这时Java编译器要求你必须 进行捕获,才可以运行。
(1)如果你不想编写捕获异常的具体代码的话,你可以使用 throws Exception 的形式, 把异常再次抛出,交给JVM(Java虚拟机)可以捕获。这是一种比较省事的办法。
(2)如果你想亲编写处理异常的代码的话,可以使用try{ }catch(){ }的形式,进行捕获, 一旦程序发生异常,它就会安照你catch{ }块编写的代码去执行。
我个人推荐你养成使用后者的习惯!
下面是一个不正确的例子。该例试图引发一个它不能捕获的异常。因为程序没有指定一个throws子句来声明这一事实,程序将不会编译。
class ThrowsDemo {
static void throwOne() {
System.out.println("Inside throwOne.");
throw new IllegalAccessException("demo");
}
public static void main(String args[]) {
throwOne();
}
}
为编译该程序,需要改变两个地方。第一,需要声明throwOne( )引发IllegalAccessException异常。第二,main( )必须定义一个try/catch 语句来捕获该异常。
正确的例子如下:
class ThrowsDemo {
static void throwOne() throws IllegalAccessException {
System.out.println("Inside throwOne.");
throw new IllegalAccessException("demo");}
public static void main(String args[]) {
try {
throwOne();
} catch (IllegalAccessException e) {
System.out.println("Caught " + e);
}
}
}
下面是例题的输出结果:
inside throwOne
caught java.lang.IllegalAccessException: demo
分享到:
相关推荐
如果在`try`块中的任何代码抛出了一个异常,控制权将立即转移到与之匹配的`catch`块。例如,考虑以下代码片段: ```java try { int[] array = new int[5]; System.out.println(array[10]); // 这将抛出...
如果在`try`块内的代码抛出了异常,控制权会立即转移到与之匹配的`catch`块。在`try`块中,开发者通常会执行可能会出现错误的操作,如打开文件、网络通信等。 3. **catch块** `catch`块是用来捕获并处理特定类型的...
Java中的throws与try...catch的区别点 Java是面向对象的编程语言,它提供了强大的异常处理机制,帮助开发者更好地处理程序中的错误和异常。其中,throws和try...catch是Java中两种常用的异常处理方式,本文将对这两...
在Java中,异常处理机制是通过五个关键字来实现的:try、catch、finally、throw、throws。 try/catch 块 try/catch 块是异常处理机制的核心组成部分。try 块用于包围可能产生异常的代码,catch 块用于捕获和处理...
理解异常的概念,运用 try 块、catch 块和 finally 块处理异常,运用多重 catch 块处理异常,运用嵌套 try/catch 块处理异常,运用关键字 throw 和 throws 处理异常。 3. 程序中的异常 在 Java 中,异常可以是编译...
本文将深入探讨“throws”与“throw”两个关键字的区别,以及它们在Java异常处理机制中的作用。 ### throws关键字 `throws`关键字主要用于方法签名中,用于声明一个方法可能会抛出的异常类型。当一个方法内部可能...
异常处理有五个关键字:try、catch、finally、throw和throws。在这其中,try-catch是最基本的结构,用于捕获并处理异常。 1. **try**:try块包含可能会抛出异常的代码。如果try块中的代码抛出了一个异常,那么控制...
### Java异常处理的四大金刚:try、catch、finally和throw的深度解析 #### Java异常处理概述 异常处理机制是程序设计中的一个重要组成部分,它能够帮助程序员有效地管理程序运行过程中可能出现的各种错误情况。...
在Java中,异常处理主要有两种方式:捕获异常(try-catch-finally)和声明抛出异常(throws)。本篇主要讨论第二种方式——声明抛出异常。 一、声明抛出异常类型(throws) 当一个方法在执行过程中可能会遇到某些...
try-catch语句有两种处理异常的方式:用throws抛出异常、用try、catch捕获异常。try语句中的代码块如果发生异常,就会跳往catch语句中执行,不执行异常代码下面的代码。 一个try语句可以接多个catch语句,当有多个...
throw语句通常与try-catch-finally语句配套使用,要么与throws配套使用。 throw的主要作用是明确地抛出一个异常,告訴调用者该方法已经抛出了一个异常。例如,`if (a != b) throw new Exception3("自定义异常");`,...
异常处理是通过五个关键字来实现的:`try`、`catch`、`finally`、`throw`和`throws`。在"异常-尝试-捕获-java"这个主题中,我们将深入探讨这些概念。 `try`块是异常处理的起点,它包含了可能会抛出异常的代码。如果...
- 使用 `try-catch-finally` 结构来捕获和处理异常,确保资源的释放等清理工作得以完成。 理解`throws`和`throw`的区别,有助于编写更加清晰、易于维护的代码,并且能够有效地处理程序运行时可能出现的问题。在...
然后,在函数体内使用try/catch进行异常判断,并在函数声明中使用throws关键字将异常抛出,以便在主函数中捕获。 代码: (此处应包含具体的Java代码,由于原文未提供,此处省略) 结果: (此处应列出程序执行的...
"异常捕获与抛出的问题,什么时候应该try,什么时候应该throws" 在 Java 中,捕获异常和抛出异常是两种不同的机制,分别用于处理不同的异常场景。 捕获异常(try-catch) 捕获异常是指在方法内部使用 try-catch ...
C++中的异常处理机制是通过try、throw和catch三个关键字来实现的。try块用于包围可能抛出异常的代码,throw语句用于抛出异常,而catch块用于捕获和处理异常。 try块的语法如下: ``` try { 语句组 } ``` try块中的...
在 Java 中,异常处理是通过五个关键字组合来完成的:try、catch、finally、throw 和 throws。 1. try-catch 语句 try-catch 语句是 Java 中捕获异常最常用的结构。其基本语法格式如下: ```java try { // 可能...
在Java中,异常处理主要依赖于以下五个关键字:`try`, `catch`, `throw`, `throws`, 和 `finally`。其中,`throws`用于声明一个方法可能抛出的异常类型,从而让调用者能够做好相应的准备或者处理这些异常。 #### `...
- 嵌套`try/catch`块:在一个`try`块内再包含一个`try`块,处理更复杂的异常情况。 - `throw`和`throws`关键字:`throw`用于手动抛出异常,`throws`用于方法签名,声明可能会抛出的异常。 2. 示例代码分析: - ...