为何我把main()函数里的System.err.println("xxxx");换成自定义的fail("xxxx");就出错了呢??

bushido 2003-09-12 04:41:04
public class Delete {
public static void main(String[] args){
if(args.length!=1){
System.err.println("Usage: java Delete <file or directory>");
System.exit(0);
}
try{
delete(args[0]);
}catch(IllegalArgumentException e){
System.err.println(e.getMessage());
}
}
public static int delete(String filename){
File file = new File(filename);
if(!file.exists()){
fail("Delete: no such file or directory:"+filename);
return 0;
}
if(!file.canWrite()){
fail("Delete:Write protected:"+filename);
return 0;
}
if(file.isDirectory()){
String[] files = file.list();
if(files.length>0){
fail("Delete:directory not empty:"+filename);
return 0;
}
}
boolean success = file.delete();
if(!success){
fail("Delete:deletion failed");
return 0;
}
return 1;
}
protected static void fail(String msg)
throws IllegalArgumentException{
throw new IllegalArgumentException(msg);
}
}
为何我把main()函数里的System.err.println("Usage: java Delete <file or directory>");换成自定义的fail("xxxx");就出错了呢??
...全文
55 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
amjn 2003-09-18
  • 打赏
  • 举报
回复
因为你的fail会抛出异常,而你的
if(args.length!=1){
System.err.println("Usage: java Delete <file or directory>");
System.exit(0);
}
没有在捕获异常的范围内
bushido 2003-09-18
  • 打赏
  • 举报
回复
能讲讲原因吗

老师告诉我,知其然,也要知其所以然
llpei 2003-09-12
  • 打赏
  • 举报
回复
System.err.println("Usage: java Delete <file or directory>");
改为:
Delete.fail("Usage: java Delete <file or directory>");


import java.io.*;

public class Delete {
public static void main(String[] args){
if(args.length!=1){
Delete.fail("Usage: java Delete <file or directory>");
System.exit(0);
}
try{
delete(args[0]);
}catch(IllegalArgumentException e){
System.err.println(e.getMessage());
}
}
public static int delete(String filename){
File file = new File(filename);
if(!file.exists()){
fail("Delete: no such file or directory:"+filename);
return 0;
}
if(!file.canWrite()){
fail("Delete:Write protected:"+filename);
return 0;
}
if(file.isDirectory()){
String[] files = file.list();
if(files.length>0){
fail("Delete:directory not empty:"+filename);
return 0;
}
}
boolean success = file.delete();
if(!success){
fail("Delete:deletion failed");
return 0;
}
return 1;
}
protected static void fail(String msg)
throws IllegalArgumentException{
throw new IllegalArgumentException(msg);
}
}
liusoft 2003-09-12
  • 打赏
  • 举报
回复
public static void main(String[] args) throws IllegalArgumentException

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧