September Morn Update

This commit is contained in:
Ingy döt Net 2019-09-12 10:33:56 -07:00
parent 4e2d22a71d
commit aac6731f2c
6856 changed files with 141342 additions and 21127 deletions

View file

@ -1,12 +1,9 @@
result = DetectDividebyZero(1, 0)
Function DetectDividebyZero(a, b)
On Error GoTo [Error]
DetectDividebyZero= (a/ b)
Exit Function
[Error]
If Err = 11 Then '11 is the error number raised when divide by zero occurs
Notice "Divide by Zero Detected!"
End If
End Function
100 WHEN EXCEPTION USE ERROR
110 FOR I=5 TO-2 STEP-1
120 PRINT 10/I
130 NEXT
140 END WHEN
150 HANDLER ERROR
160 IF EXTYPE=3001 THEN PRINT EXSTRING$(EXTYPE);" in line";EXLINE
170 CONTINUE
180 END HANDLER

View file

@ -1,6 +1,12 @@
10 ON ERROR GOTO 60
20 PRINT 2/3
30 PRINT 3/5
40 PRINT 4/0
50 END
60 IF ERR=11 THEN PRINT "Division by zero in line"ERL:RESUME 50
result = DetectDividebyZero(1, 0)
Function DetectDividebyZero(a, b)
On Error GoTo [Error]
DetectDividebyZero= (a/ b)
Exit Function
[Error]
If Err = 11 Then '11 is the error number raised when divide by zero occurs
Notice "Divide by Zero Detected!"
End If
End Function

View file

@ -1,13 +1,6 @@
;Set up a Procedure to handle any Error
Procedure MyErrorHandler()
Define txt$="The following error happened."+#CRLF$+ ErrorMessage()+"at line "+Str(ErrorLine())
MessageRequester("OnError test", txt$)
EndProcedure
; Tell where to go if an Error happens
OnErrorCall(@MyErrorHandler())
;Now, do something very stupid so that we may see an Error...
Repeat
A=Random(100)/Random(100)
ForEver
10 ON ERROR GOTO 60
20 PRINT 2/3
30 PRINT 3/5
40 PRINT 4/0
50 END
60 IF ERR=11 THEN PRINT "Division by zero in line"ERL:RESUME 50

View file

@ -1,2 +1,13 @@
Define.d a, b
Debug a/b
;Set up a Procedure to handle any Error
Procedure MyErrorHandler()
Define txt$="The following error happened."+#CRLF$+ ErrorMessage()+"at line "+Str(ErrorLine())
MessageRequester("OnError test", txt$)
EndProcedure
; Tell where to go if an Error happens
OnErrorCall(@MyErrorHandler())
;Now, do something very stupid so that we may see an Error...
Repeat
A=Random(100)/Random(100)
ForEver

View file

@ -1,7 +1,2 @@
on error goto [error]
a = 1 / 0
wait
[error] ' error 11 is division by zero err number
If err = 11 Then print "Division by Zero"
wait
Define.d a, b
Debug a/b

View file

@ -0,0 +1,7 @@
on error goto [error]
a = 1 / 0
wait
[error] ' error 11 is division by zero err number
If err = 11 Then print "Division by Zero"
wait

View file

@ -0,0 +1,17 @@
(define (safediv a b)
(if (eq? (type b) type-complex)
(/ a b) ; complex can't be 0
(let ((z (/ 1 (inexact b))))
(unless (or (equal? z +inf.0) (equal? z -inf.0))
(/ a b)))))
; testing:
(for-each (lambda (x)
(if x (print x) (print "division by zero detected")))
(list
(safediv 1 5) ; => 1/5
(safediv 2 0) ; => division by zero detected
(safediv 3 1+2i) ; => 3/5-6/5i
(safediv 4 0+i) ; => 0-4i
(safediv 5 7/5) ; => 25/7
))

View file

@ -1,14 +1,12 @@
sub div($a, $b){
sub div($a, $b) {
my $r;
try {
$r = $a / $b;
CATCH {
say "tried to divide by zero !" if $! ~~ "Divide by zero";
default { note "Unexpected exception, $_" }
}
}
return $r // fail;
return $r // Nil;
}
say div(10,2); # 5
say div(1,0); # Inf, 1/0 constants are substituted for Infinity
say div(1, sin(0)); # undef, and prints "tried to divide by zero"
say div(10,2);
say div(1, sin(0));

View file

@ -1,7 +1,5 @@
multi div($a, $b){ return $a / $b }
multi div($a, $b where { $b == 0 }){
say 'lolicheatsyou';
return 1;
}
multi div($a, $b) { return $a / $b }
multi div($a, $b where { $b == 0 }) { note 'Attempt to divide by zero.'; return Nil }
say div(1, sin(0)); # prints "lolicheatsyou" newline "1"
say div(10, 2);
say div(1, sin(0));

View file

@ -0,0 +1,2 @@
r:x%0
?[1=sum r=(0n;0w;-0w);"division by zero detected";()]

View file

@ -14,4 +14,10 @@ object DivideByZero extends Application {
println("divided by zero = " + check(1, 0))
def check1(x: Int, y: Int): Boolean = {
import scala.util.Try
Try(y/x).isFailure
}
println("divided by zero = " + check1(1, 0))
}