118 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
		
		
			
		
	
	
			118 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
| 
								 | 
							
								package haxe;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
									Base class for exceptions.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									If this class (or derivatives) is used to catch an exception, then
							 | 
						||
| 
								 | 
							
									`haxe.CallStack.exceptionStack()` will not return a stack for the exception
							 | 
						||
| 
								 | 
							
									caught. Use `haxe.Exception.stack` property instead:
							 | 
						||
| 
								 | 
							
									```haxe
							 | 
						||
| 
								 | 
							
									try {
							 | 
						||
| 
								 | 
							
										throwSomething();
							 | 
						||
| 
								 | 
							
									} catch(e:Exception) {
							 | 
						||
| 
								 | 
							
										trace(e.stack);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									Custom exceptions should extend this class:
							 | 
						||
| 
								 | 
							
									```haxe
							 | 
						||
| 
								 | 
							
									class MyException extends haxe.Exception {}
							 | 
						||
| 
								 | 
							
									//...
							 | 
						||
| 
								 | 
							
									throw new MyException('terrible exception');
							 | 
						||
| 
								 | 
							
									```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									`haxe.Exception` is also a wildcard type to catch any exception:
							 | 
						||
| 
								 | 
							
									```haxe
							 | 
						||
| 
								 | 
							
									try {
							 | 
						||
| 
								 | 
							
										throw 'Catch me!';
							 | 
						||
| 
								 | 
							
									} catch(e:haxe.Exception) {
							 | 
						||
| 
								 | 
							
										trace(e.message); // Output: Catch me!
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									To rethrow an exception just throw it again.
							 | 
						||
| 
								 | 
							
									Haxe will try to rethrow an original native exception whenever possible.
							 | 
						||
| 
								 | 
							
									```haxe
							 | 
						||
| 
								 | 
							
									try {
							 | 
						||
| 
								 | 
							
										var a:Array<Int> = null;
							 | 
						||
| 
								 | 
							
										a.push(1); // generates target-specific null-pointer exception
							 | 
						||
| 
								 | 
							
									} catch(e:haxe.Exception) {
							 | 
						||
| 
								 | 
							
										throw e; // rethrows native exception instead of haxe.Exception
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									```
							 | 
						||
| 
								 | 
							
								**/
							 | 
						||
| 
								 | 
							
								extern class Exception {
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Exception message.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									public var message(get,never):String;
							 | 
						||
| 
								 | 
							
									private function get_message():String;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										The call stack at the moment of the exception creation.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									public var stack(get,never):CallStack;
							 | 
						||
| 
								 | 
							
									private function get_stack():CallStack;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Contains an exception, which was passed to `previous` constructor argument.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									public var previous(get,never):Null<Exception>;
							 | 
						||
| 
								 | 
							
									private function get_previous():Null<Exception>;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Native exception, which caused this exception.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									public var native(get,never):Any;
							 | 
						||
| 
								 | 
							
									final private function get_native():Any;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Used internally for wildcard catches like `catch(e:Exception)`.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									static private function caught(value:Any):Exception;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Used internally for wrapping non-throwable values for `throw` expressions.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									static private function thrown(value:Any):Any;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Create a new Exception instance.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										The `previous` argument could be used for exception chaining.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										The `native` argument is for internal usage only.
							 | 
						||
| 
								 | 
							
										There is no need to provide `native` argument manually and no need to keep it
							 | 
						||
| 
								 | 
							
										upon extending `haxe.Exception` unless you know what you're doing.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									public function new(message:String, ?previous:Exception, ?native:Any):Void;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Extract an originally thrown value.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										Used internally for catching non-native exceptions.
							 | 
						||
| 
								 | 
							
										Do _not_ override unless you know what you are doing.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									private function unwrap():Any;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Returns exception message.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									public function toString():String;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										Detailed exception description.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										Includes message, stack and the chain of previous exceptions (if set).
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									public function details():String;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									/**
							 | 
						||
| 
								 | 
							
										If this field is defined in a target implementation, then a call to this
							 | 
						||
| 
								 | 
							
										field will be generated automatically in every constructor of derived classes
							 | 
						||
| 
								 | 
							
										to make exception stacks point to derived constructor invocations instead of
							 | 
						||
| 
								 | 
							
										`super` calls.
							 | 
						||
| 
								 | 
							
									**/
							 | 
						||
| 
								 | 
							
									// @:noCompletion @:ifFeature("haxe.Exception.stack") private function __shiftStack():Void;
							 | 
						||
| 
								 | 
							
								}
							 |