Errors
List of errors
In this section we summarize all the possible exceptions that can occur in different methods of a multimethod:
| Exception | Methods | Cause |
|---|---|---|
| BadNumberOfVirtualParameterTypesException | add() | The number of virtual parameter types of the method added is different from the one defined in the multimethod |
| BadNonVirtualParameterTypesException | add() | The virtual parameter types of the method added are different from those defined in the multimethod |
| BadReturnTypeException | add() | The return type of the method added is different from the one defined in the multimethod |
| MethodNotAddedException | add() | The method cannot be added |
| IllegalArgumentException | invoke() | A virtual argument is null |
| NoMatchingMethodException | invoke(), check() | There is no matching method for the requested tuple of typles |
| AmbiguousMethodException | invoke(), check() | It is not possible to select one matching method for the requested tuple of typles |
| UnexpectedException | invoke(), check() | The method is not accessible |
| User exception | invoke() | The called matching method throws an exception |
For exceptions occuring in the add() methods, we remind that:
- The return type is defined by a call to returnType() or by the one of the first added method.
- The non virtual parameter types are defined by a call to nonVirtualParameterTypes() or by those of the first added method.
- The number of virtual parameter types is defined by the type of the multimethod i.e. Method1, Method2, Method3, Method4, Method5, Method6, Method7.