为什么 BufferedReader class 在编译时而不是在 运行 时产生异常
why BufferedReader class producing Exception at compile time not at the run time
我知道异常发生在 运行 时间而不是编译时间。
所以这段代码编译成功,没有任何编译时异常类型 java.lang.ArithmeticException: / by zero
但只在 运行 时间给出异常
class divzero{
public static void main(String[] arg){
System.out.print(3/0);
}
}
但是当我使用 BufferedReader
class 时它说“unreported exception java.io.IOException; must be caught or declared to be thrown
” 当我编译下面给出的代码时。我认为它应该在 运行 时间而不是在编译时发生 compilation.because 异常时产生此异常。
import java.io.*;
class Bufferedreaderclass{
public static void main(String[] arg)
{
System.out.print("mazic of buffer reader \n Input : ");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input;
input = br.readLine();
System.out.print("Your input is: "+input);
}
}
我知道,我应该抛出 IOException
类型的异常,但为什么呢?我想知道为什么“unreported exception java.io.IOException
”在编译时而不是在 运行 时。
请向我说明为什么会这样?
readLine的签名是这样的
public String readLine() throws IOException
因此你必须处理它可能抛出的异常。添加 try/catch
或添加 throws IOException
到您的方法。
在java中有checked exceptions和unchecked exceptions。这是一个已检查的异常,您必须以某种方式处理它。 ArithmeticException 是未经检查的异常的示例。
由于 IOException
是检查异常,您必须使用 try...catch
或“throws”。
try...catch
块的用法如下所示。它将处理 IOException
.
的运行时出现
import java.io.*;
class Bufferedreaderclass{
public static void main(String[] arg)
{
System.out.print("mazic of buffer reader \n Input : ");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = "";
try{
input = br.readLine();
System.out.print("Your input is: "+input);
} catch (IOException e) {
// do something useful with this exception
}
}
有关使用 try...catch
的详细信息,请参阅 https://docs.oracle.com/javase/tutorial/essential/exceptions/handling.html
我知道异常发生在 运行 时间而不是编译时间。
所以这段代码编译成功,没有任何编译时异常类型 java.lang.ArithmeticException: / by zero
但只在 运行 时间给出异常
class divzero{
public static void main(String[] arg){
System.out.print(3/0);
}
}
但是当我使用 BufferedReader
class 时它说“unreported exception java.io.IOException; must be caught or declared to be thrown
” 当我编译下面给出的代码时。我认为它应该在 运行 时间而不是在编译时发生 compilation.because 异常时产生此异常。
import java.io.*;
class Bufferedreaderclass{
public static void main(String[] arg)
{
System.out.print("mazic of buffer reader \n Input : ");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input;
input = br.readLine();
System.out.print("Your input is: "+input);
}
}
我知道,我应该抛出 IOException
类型的异常,但为什么呢?我想知道为什么“unreported exception java.io.IOException
”在编译时而不是在 运行 时。
请向我说明为什么会这样?
readLine的签名是这样的
public String readLine() throws IOException
因此你必须处理它可能抛出的异常。添加 try/catch
或添加 throws IOException
到您的方法。
在java中有checked exceptions和unchecked exceptions。这是一个已检查的异常,您必须以某种方式处理它。 ArithmeticException 是未经检查的异常的示例。
由于 IOException
是检查异常,您必须使用 try...catch
或“throws”。
try...catch
块的用法如下所示。它将处理 IOException
.
import java.io.*;
class Bufferedreaderclass{
public static void main(String[] arg)
{
System.out.print("mazic of buffer reader \n Input : ");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = "";
try{
input = br.readLine();
System.out.print("Your input is: "+input);
} catch (IOException e) {
// do something useful with this exception
}
}
有关使用 try...catch
的详细信息,请参阅 https://docs.oracle.com/javase/tutorial/essential/exceptions/handling.html