The most obvious difference here between Java and C# is that C# does not have
checked exceptions. Most of the time, all this means is that we can drop the
throws
clause from method declarations.
Try/catch
clauses generally translate without trouble. A try
clause that
declares resources needs a little more care but we hardly use these in Saxon.
The syntax for a catch
that lists multiple exceptions is a little different,
but the conversion rule is straightforward enough.
The main problem is deciding on the hierarchy of exception classes. If
the Java code tries to catch NumberFormatException
, how should we convert it?
What exception will the C# code be throwing in the same situation?
To be honest, I think we probably need further work in this area. Although we're passing 95% of test cases already, I think we'll find that quite a few of the remaining 5% are negative tests where correct catching of exceptions plays a role, and we'll need to give this more careful attention.