noirHat
noirHat

Reputation: 13

Default constructor cannot handle exception type Exception thrown by implicit super constructor

I am trying to read from a txt file and display it to a JSP file.

The Bean class gets BufferedReader from the FileReaderz class. I create a Beanx object in jsp, but this is where I get stuck

 public class Beanx {
        public OuterBlock[] outer=new OuterBlock[100];
        public InnerBlock[] inner=new InnerBlock[100];

        /*public List<String> token1 = new ArrayList<String>();
        public List<String> token2 = new ArrayList<String>();*/
        //String[] token1;
        //String[] token2;

        public void callFileReaderz()throws Exception{
            FileReaderz fr=new FileReaderz();
            BufferedReader br1=FileReaderz.br;
            String[] token;
            int i=0,j=0;

            String line;
            while((line=br1.readLine())!=null){
                //System.out.println(line);
                token=line.split("#");
                //List<String> tokenList=Arrays.asList(token);
                if(token.length==5){
                    OuterBlock outerObj=new OuterBlock(token[0],Integer.parseInt(token[1]),Integer.parseInt(token[2]),
                            Float.parseFloat(token[3]),Float.parseFloat(token[4]));
                    this.outer[i++]=outerObj;
                    //System.out.println(token[0]);

                }
                else{
                    InnerBlock innerObj = new InnerBlock(token[0],token[1],Integer.parseInt(token[2]),
                            Integer.parseInt(token[3]),Float.parseFloat(token[4]),Float.parseFloat(token[5]));
                    this.inner[j++]=innerObj;

                }
            }
            br1.close();

        }

        public Beanx() throws Exception{
            this.callFileReaderz();
        }
    }


    public class FileReaderz {
        public static BufferedReader br;

        public static void main (String[] args)throws Exception {
            // TODO Auto-generated method stub
            //public FileReaderz() throws FileNotFoundException{
            br=new BufferedReader(new FileReader("database1.txt"));

    //System.out.println(br.readLine());
    }

}

When I try this in JSP page,

I get the error:

org.apache.jasper.JasperException: Unable to compile class for JSP: 

An error occurred at line: 15 in the jsp file: /dashBoard.jsp
Default constructor cannot handle exception type Exception thrown by implicit super constructor. Must define an explicit constructor
12: </head>
13: 
14: <body>
15: <%! Beanx bean=new Beanx(); %>
16: <div class="table-title">
17: <h3>Projects In Repository</h3>
18: </div>

Upvotes: 1

Views: 1776

Answers (1)

Rohit Gaikwad
Rohit Gaikwad

Reputation: 3914

This is because the Beanx class constructor throws Exception and you are creating Beanx object in declaration tag without handling the exception.

To resolve this issue just initialize the Beanx in declaration tag with null as below:

<%! Beanx bean =null; %>

And whenever you need to use this bean in scriptlet tag use the below code:

<% 
   try{

      bean=new Beanx();

      }catch(Exception e){
      //To do something
      }
 %>

This is same as in below java code:

class Main extends HttpServlet{

Beanx bean =null;

 protected void doGet(HttpServletRequest request, HttpServletResponse response){
    try{

      bean=new Beanx();

      }catch(Exception e){
      //To do something
      }
 }
}

Upvotes: 1

Related Questions