On Monday, August 15, 2016 at 6:24:02 AM UTC, Tamas Papp wrote:
>
> You can use exit(0), but the exit code is implicitly 0 anyway when your 
> Julia script runs without errors. See 
> http://docs.julialang.org/en/release-0.4/stdlib/base/


Yes, I did check, the default is 1 on exception/error (there are no known 
errors to me except subtypes of Exception).

julia -e "type MyCustomException <: Exception end; 
throw(MyCustomException)"; echo $?
ERROR: MyCustomException
1

julia -e "throw(UnicodeError)"; echo $?
ERROR: MyCustomException
1


When is there a need to call exit(n) # with non-zero n? Or n>1; would 
throwing an exception always be better than at least exit(1)?


julia> @edit throw(MyCustomException)
ERROR: ArgumentError: argument is not a generic function
 in methods at ./reflection.jl:140

I can't see that anything other than 1 is ever thrown on exception [as 
throw is a keyword and not really a function, so I'm not sure where to 
check..]


Is there a need (or a possibility, seems not, only allows for a message (in 
only one language..)) to throw exceptions with some other non-zero error 
code? [I guess it's bad form to catch exceptions and then call exit.. or 
call exit from atexit handler..]


This is what I found:

exit(n) = ccall(:jl_exit, Void, (Int32,), n)
exit() = exit(0)
quit() = exit()


So if at the end of your script exit() is called you get 0 exit code for 
sure.


bash manual:

"An OR list has the form

              command1 || command2

       command2 is executed if and only if command1 returns a non-zero exit 
status

[..]

?      Expands to the exit status of the most recently executed foreground 
pipeline.

[..]

PIPESTATUS
              An array variable (see Arrays below) containing a list of 
exit status values from the processes in the most-recently-executed 
foreground pipeline (which may contain only a single  com‐
              mand).

[..]

If the name is neither a shell function nor a builtin, and contains no 
slashes, bash searches each element of the PATH for a directory containing 
an executable file by that name.  Bash uses a
       hash table to remember the full pathnames of executable files (see 
hash under SHELL BUILTIN COMMANDS below).  A full search of the directories 
in PATH is performed only if the command is  not
       found in the hash table.  If the search is unsuccessful, the shell 
searches for a defined shell function named command_not_found_handle.  If 
that function exists, it is invoked with the orig‐
       inal command and the original command's arguments as its arguments, 
and the function's exit status becomes the exit status of the shell.  If 
that function is not defined, the shell prints  an
       error message and returns an exit status of 127.

[..]

EXIT STATUS
       The exit status of an executed command is the value returned by the 
waitpid system call or equivalent function.  Exit statuses fall between 0 
and 255, though, as explained  below,  the  shell
       may  use values above 125 specially.  Exit statuses from shell 
builtins and compound commands are also limited to this range. Under 
certain circumstances, the shell will use special values to
       indicate specific failure modes.

       For the shell's purposes, a command which exits with a zero exit 
status has succeeded.  An exit status of zero indicates success.  A 
non-zero exit status indicates failure.   When  a  command
       terminates on a fatal signal N, bash uses the value of 128+N as the 
exit status.

       If a command is not found, the child process created to execute it 
returns a status of 127.  If a command is found but is not executable, the 
return status is 126.

       If a command fails because of an error during expansion or 
redirection, the exit status is greater than zero.

       Shell  builtin  commands  return a status of 0 (true) if successful, 
and non-zero (false) if an error occurs while they execute.  All builtins 
return an exit status of 2 to indicate incorrect
       usage.

       Bash itself returns the exit status of the last command executed, 
unless a syntax error occurs, in which case it exits with a non-zero 
value.  See also the exit builtin command below."

-- 
Palli.


>
> On Mon, Aug 15 2016, Rishabh Raghunath wrote: 
>
> > I'd like to know What the equivalent of "return 0  used in C"  is in 
> Julia 
> > while completion of program .. 
>

Reply via email to