java 关于异常和FileInputStream的问题
importjava.io.*;publicclassqqq{publicstaticvoidmain(Stringarg[]){intb;bytebuffer[]=ne...
import java.io.*;
public class qqq{
public static void main(String arg[]){
int b;
byte buffer[]=new byte[2500];
try{
FileInputStream readfile=new FileInputStream("test.txt");
b=readfile.read(buffer,0,2500);
try{
String str=new String(buffer,0,b,"Default");
System.out.println();
}
catch(UnsupportedEncodingException ee){}
}
catch(IOException e){}
}
}
1。为什么这里try里需要嵌套一个try,我直接一个try下来,再catch不行么?这样做的作用是什么?
2。UnsupportedEncodingException 这个是什么异常,是由哪个语句引发的?
3。String str=new String(buffer,0,b,"Default");这里这个b我用2500可以么?有什么不同?
4。同样都是读,我用
int ch=0;
while((ch=readfile.read())!=-1){
System.out.print((char)ch);
}
这种方式可以么? 展开
public class qqq{
public static void main(String arg[]){
int b;
byte buffer[]=new byte[2500];
try{
FileInputStream readfile=new FileInputStream("test.txt");
b=readfile.read(buffer,0,2500);
try{
String str=new String(buffer,0,b,"Default");
System.out.println();
}
catch(UnsupportedEncodingException ee){}
}
catch(IOException e){}
}
}
1。为什么这里try里需要嵌套一个try,我直接一个try下来,再catch不行么?这样做的作用是什么?
2。UnsupportedEncodingException 这个是什么异常,是由哪个语句引发的?
3。String str=new String(buffer,0,b,"Default");这里这个b我用2500可以么?有什么不同?
4。同样都是读,我用
int ch=0;
while((ch=readfile.read())!=-1){
System.out.print((char)ch);
}
这种方式可以么? 展开
2个回答
展开全部
1.针对的异常不同,catch不同的Exception,可以做详细的异常处理,当然也可以一起逮,但是针对性不强,要看具体的需求,这个的作用你在每个异常里print一下然后专门触发那个异常就知道了
2.当然要触发那个异常,得先了解那个异常,我们做异常处理往往都是先有异常或能想到的异常再处理,你这里就有点逆向了,遇到这样的问题最好是查API或者相关文档,或者直接网上找一下
public class UnsupportedEncodingException extends IOException
不支持字符编码异常,也就是字符转码的问题,可能是因为缺失包,也可能是文件编码的设置问题不兼容导致,看String str=new String(buffer,0,b,"Default");
查String 的构造方法
String(byte[] bytes, int offset, int length, Charset charset)
通过使用指定的 charset 解码指定的 byte 子数组,构造一个新的 String
所以你指定的charset ("Default")有可能不存在而引发的异常
3.这个区别是有的,具体我没有运行你的文件,按我的理解b这个数应该指向文件的字符个数,也就是说文件有100个字符,b就等于100了,如果写2500的话后面2400个空间就多余了
2.当然要触发那个异常,得先了解那个异常,我们做异常处理往往都是先有异常或能想到的异常再处理,你这里就有点逆向了,遇到这样的问题最好是查API或者相关文档,或者直接网上找一下
public class UnsupportedEncodingException extends IOException
不支持字符编码异常,也就是字符转码的问题,可能是因为缺失包,也可能是文件编码的设置问题不兼容导致,看String str=new String(buffer,0,b,"Default");
查String 的构造方法
String(byte[] bytes, int offset, int length, Charset charset)
通过使用指定的 charset 解码指定的 byte 子数组,构造一个新的 String
所以你指定的charset ("Default")有可能不存在而引发的异常
3.这个区别是有的,具体我没有运行你的文件,按我的理解b这个数应该指向文件的字符个数,也就是说文件有100个字符,b就等于100了,如果写2500的话后面2400个空间就多余了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询