public static void main(String[] args) throws IllegalArgumentException

解决方案 »

  1.   

    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);
    }
    }
      

  2.   

    因为你的fail会抛出异常,而你的
      if(args.length!=1){
          System.err.println("Usage: java Delete <file or directory>");
          System.exit(0);
          }
    没有在捕获异常的范围内