import java.io.*;
public class TestCharsetExa
{
public static void main(String[] args)
{ String file = "D:/test.txt";
String charset = "UTF-8";
FileOutputStream outputStream = new FileOutputStream(file);
OutputStreamWriter writer = new OutputStreamWriter(outputStream, charset);
try
{ writer.write("这是要保存的中文字符");
}
finally
{ writer.close(); }
FileInputStream inputStream = new FileInputStream(file);
InputStreamReader reader = new InputStreamReader( inputStream, charset);
StringBuffer buffer = new StringBuffer();
char[] buf = new char[64];
int count = 0;
try
{
while ((count=reader.read(buf))!=-1)
{ buffer.append(buf, 0, count);
}
}
finally
{ reader.close();
}
}
}
这儿是一个字符输入输出流,错误提示是没有捕捉异常。在try-catch一定得一起用才能捕获异常吗?finally一般是在什么异常情况下用???
public class TestCharsetExa
{
public static void main(String[] args)
{ String file = "D:/test.txt";
String charset = "UTF-8";
FileOutputStream outputStream = new FileOutputStream(file);
OutputStreamWriter writer = new OutputStreamWriter(outputStream, charset);
try
{ writer.write("这是要保存的中文字符");
}
finally
{ writer.close(); }
FileInputStream inputStream = new FileInputStream(file);
InputStreamReader reader = new InputStreamReader( inputStream, charset);
StringBuffer buffer = new StringBuffer();
char[] buf = new char[64];
int count = 0;
try
{
while ((count=reader.read(buf))!=-1)
{ buffer.append(buf, 0, count);
}
}
finally
{ reader.close();
}
}
}
这儿是一个字符输入输出流,错误提示是没有捕捉异常。在try-catch一定得一起用才能捕获异常吗?finally一般是在什么异常情况下用???
public static void main(String[] args) throws Exception
然后里面就可以尽情的偷懒了。
finally主要是为了防范RuntimeException而导致关键代码没有执行,finally不负责处理异常。
{ if(str==null)new NullException("参数不能为空")
if(str.equals("A"))return 1;
if(str.equals("B"))return 2;}很多异常都是在方法后申明,在try-catch中捕获,上面的代码在方法里实例化异常类
它能保证出现异常时结束方法,转到catch块中这个就是楼上所说的RunTimeExcption
异常的处理吗?这和只在方法后面申明异常不在方法里实例化异常有什么区别??
}catch(Exception e){
}finally{
}try 与catch要一起用的,如果该方法存在可捕获异常,则需要显示捕获。如果是运行时异常,比如runtimeException,可以捕获,也可以不捕获,但是如果可能存在如下情况,最后,自己强制去捕获一下。
try 代码块中,表示执行代码,一旦出现异常 如果没有抛出,而是选择,捕获的话,则会执行catch中的方法。所以,如果没有catch 那么try 是毫无意义的。至于finally 中的代码,则表示在方法无论是正常结束,还是异常结束,都会去强制执行
这个就好过你后面程序算个半死,然后才出个神奇的错误。其实对于运行时异常和常规异常的使用上,业界一直也有很大的争议:
◎ 有人主张不声明任何常规异常,理由是既然你声明异常,说明是你预料之内的,那就不是异常,只是一种特殊的返回结果;如果是意料之外的,那就应该用运行时异常。
◎ 有人主张只要是预料之中的就应该声明异常,参数检查等都应该用异常规范好(类似于 assert );程序根本就不应该发出运行时异常,运行时异常只能是环境或平台来产生。
各有合理性,难以决断谁就更有优势。