On 7/13/06, Mikhail Loenko <[EMAIL PROTECTED]> wrote:

Minor note:

I havn't insisted that we *always* return error code rather than throw
Exception,


AFAIK, luni and nio modules always throw exception rather than return error
code.

instead I suggest that we avoid throwing exceptions from native
whenever possible.


I think impossible is nothing. :)  All exception thrown by native code can
be replaced by error code.  Are there any exceptions?
Of course, VM is not in the scope of this discussion.


I thought that native calls that don't throw exceptions might be optimized
by JIT. But it's only a guess, I leave it for JIT guys to comment.

Thanks,
Mikhail

2006/7/13, Paulex Yang <[EMAIL PROTECTED]>:
> Mikhail Loenko wrote:
> > I suggest that we:
> >
> > 1) avoid throwing exceptions from native code
> I have no strong feelings yet which is better, to throw Exception in
> native codes directly or always to return error codes to Java. There are
> different styles in Java and C programming on error handling, C program
> generally return error codes and use output parameter if necessary,
> while Java codes generally separate normal return value and exceptional
> case. JNI is combined by Java and C, so there must be one side to
> violate the convention.
>
> Throwing exception in native codes makes the codes hard to understand or
> maintain, while returning error codes may introduce one more time error
> code conversions[1], further, sometimes not only error code but the
> error message generated by OS is useful.
>
> [1]check out the stack below, there are several error codes set needed:
> Java codes-->platform indepdent native codes-->portlib codes-->system
call
> 1. system call error codes, which is platform dependent
> 2. portlib error codes, which is platform independent
> 3. Java error codes, which is returned by JNI methods to Java,  so it
> needs to be defined in in Java codes(i.e. in generated JNI header files)
> 4. Java Exception class
> > 2) don't parse exception messages in the code (use subclasses of
> > exceptions
> > when necessary)
> Agree, String comparison is not good in many ways.
> >
> > Thanks,
> > Mikhail
> >
> > 2006/7/13, Andrew Zhang <[EMAIL PROTECTED]>:
> >> On 7/13/06, Jimmy, Jing Lv <[EMAIL PROTECTED]> wrote:
> >> >
> >> > Hi:
> >> >
> >> >     I'd like to raise the topic on I18N of native code. As
discussed
> >> > about patch-815, we found there are exceptions thrown by native
code
> >> > with un-internationalized error message.
> >>
> >>
> >>
> >> To resolve this problem, there
> >> > may be two solutions:
> >> >
> >> > 1) make native code return error code instead of throw exceptions,
and
> >> > let Java code deal with these errors. This seems pretty good, and
also
> >> > resolve such problems like 815, but require much more effort to
> >> refactor
> >> > all native and Java codes. What's more, as some native methods do
not
> >> > return an integer at all, we may add an output parameter to them,
at
> >> > least for network-related luni/nio, there are about 10 methods like
> >> this.
> >>
> >>
> >> May we add an output parameter "errorCode" in each method.
> >>
> >> 2) As it is still easy for native code to call Java code, so rewrite
> >> > error-message-lookup native method to lookup internationalized
> >> message,
> >> > e.g., call MsgUtil.getString(). This refactor may be easy, but to
> >> > JIRA-815 and other message-dependent Java code, it do no help. So
it
> >> > still requires other refactoring, e.g., return error code in some
> >> > situation like suggested in (1).
> >> >
> >> > Another solution can be: catch exceptions on Java code, replace its
> >> > message, and throw out again, this may be too ugly, so I do not
> >> suggest
> >> > so.
> >> >
> >> > Any suggestions? Thanks!
> >> >
> >> > --
> >> >
> >> > Best Regards!
> >> >
> >> > Jimmy, Jing Lv
> >> > China Software Development Lab, IBM
> >> >
> >> >
---------------------------------------------------------------------
> >> > Terms of use : http://incubator.apache.org/harmony/mailing.html
> >> > To unsubscribe, e-mail:
[EMAIL PROTECTED]
> >> > For additional commands, e-mail:
[EMAIL PROTECTED]
> >> >
> >> >
> >>
> >>
> >> --
> >> Andrew Zhang
> >> China Software Development Lab, IBM
> >>
> >>
> >
> > ---------------------------------------------------------------------
> > Terms of use : http://incubator.apache.org/harmony/mailing.html
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
>
> --
> Paulex Yang
> China Software Development Lab
> IBM
>
>
>
> ---------------------------------------------------------------------
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




--
Andrew Zhang
China Software Development Lab, IBM

Reply via email to