pierredavidbelanger / chatter-bot-api

A Mono/.NET, JAVA, Python and PHP chatter bot API that supports Cleverbot, JabberWacky and Pandorabots.
182 stars 71 forks source link

Default constructor cannot handle exception type Exception thrown by implicit super constructor. Must define an explicit constructor #32

Closed JPaulMora closed 8 years ago

JPaulMora commented 8 years ago

I believe Chatterbot class should throw exception

code with error:

ChatterBotFactory factory = new ChatterBotFactory();
ChatterBot cleverbot = factory.create(ChatterBotType.CLEVERBOT); 

the second line.

pierredavidbelanger commented 8 years ago

I am not sure I understand what you mean here.

I will suppose you are using Java.

factory.create() is declared to throw Exception.

You probably need to try/catch it.

JPaulMora commented 8 years ago

Wow, sorry for really bad Issue formatting, Im using Java and I get the error described in the title (exactly the title). looking it up online, tells me that if a superclass() throws exception, classes derived from it should too. Those two lines posted above are enough to trigger the error in Eclipse Mars. Thanks in advance.

pierredavidbelanger commented 8 years ago

"Those two lines posted above" are certainly not enough to trigger an error, let alone to compile :) I mean, maybe you can post more code.

I am pretty sure this come from your code.

And, I guess you have something like this:

public class Parent {
    public Parent() throws Exception {
        ChatterBotFactory factory = new ChatterBotFactory();
        ChatterBot cleverbot = factory.create(ChatterBotType.CLEVERBOT); 
    }
}

public class Child extends Parent {
}

In that case, indeed, IDEs will underline the Child class and say that Exception is unhandled.

You can fix this by removing the throws Exception from the Parent ctor, and wrapping the factory.create into a try / catch block, as suggested in my first comment.

Or, more simply, adding an empty Child ctor that also throws Exception (this is what IntelliJ is suggesting me when I Alt-Enter on the error).

JPaulMora commented 8 years ago

I ended up not using the factory and calling the chatterbot constructor directly, that worked flawlessly.

I may try what you just posted though, thanks.