Commit e2b2ea45 authored by Guido van Rossum's avatar Guido van Rossum

Added new exceptions.

parent f833f798
...@@ -66,7 +66,7 @@ builtin_chr(self, v) ...@@ -66,7 +66,7 @@ builtin_chr(self, v)
} }
x = getintvalue(v); x = getintvalue(v);
if (x < 0 || x >= 256) { if (x < 0 || x >= 256) {
err_setstr(RuntimeError, "chr() arg not in range(256)"); err_setstr(ValueError, "chr() arg not in range(256)");
return NULL; return NULL;
} }
s[0] = x; s[0] = x;
...@@ -335,7 +335,7 @@ min_max(v, sign) ...@@ -335,7 +335,7 @@ min_max(v, sign)
} }
n = (*sq->sq_length)(v); n = (*sq->sq_length)(v);
if (n == 0) { if (n == 0) {
err_setstr(RuntimeError, "min() or max() of empty sequence"); err_setstr(ValueError, "min() or max() of empty sequence");
return NULL; return NULL;
} }
w = (*sq->sq_item)(v, 0); /* Implies INCREF */ w = (*sq->sq_item)(v, 0); /* Implies INCREF */
...@@ -417,7 +417,7 @@ builtin_ord(self, v) ...@@ -417,7 +417,7 @@ builtin_ord(self, v)
return NULL; return NULL;
} }
if (getstringsize(v) != 1) { if (getstringsize(v) != 1) {
err_setstr(RuntimeError, "ord() arg must have length 1"); err_setstr(ValueError, "ord() arg must have length 1");
return NULL; return NULL;
} }
return newintobject((long)(getstringvalue(v)[0] & 0xff)); return newintobject((long)(getstringvalue(v)[0] & 0xff));
...@@ -488,7 +488,7 @@ builtin_range(self, v) ...@@ -488,7 +488,7 @@ builtin_range(self, v)
ilow = 0; ilow = 0;
} }
if (istep == 0) { if (istep == 0) {
err_setstr(RuntimeError, "zero step for range()"); err_setstr(ValueError, "zero step for range()");
return NULL; return NULL;
} }
/* XXX ought to check overflow of subtraction */ /* XXX ought to check overflow of subtraction */
...@@ -594,6 +594,15 @@ object *NameError; ...@@ -594,6 +594,15 @@ object *NameError;
object *SystemError; object *SystemError;
object *KeyboardInterrupt; object *KeyboardInterrupt;
/* New exceptions */
object *AttributeError;
object *IOError;
object *ZeroDivisionError;
object *IndexError;
object *ValueError;
object *KeyError;
object *OverflowError;
static object * static object *
newstdexception(name, message) newstdexception(name, message)
char *name, *message; char *name, *message;
...@@ -615,6 +624,18 @@ initerrors() ...@@ -615,6 +624,18 @@ initerrors()
SystemError = newstdexception("SystemError", "system error"); SystemError = newstdexception("SystemError", "system error");
KeyboardInterrupt = KeyboardInterrupt =
newstdexception("KeyboardInterrupt", "keyboard interrupt"); newstdexception("KeyboardInterrupt", "keyboard interrupt");
/* New exceptions */
AttributeError =
newstdexception("AttributeError", "undefined attribute");
IOError = newstdexception("IOError", "I/O error");
ZeroDivisionError =
newstdexception("ZeroDivisionError", "division by zero");
IndexError = newstdexception("IndexError", "index out of range");
ValueError = newstdexception("ValueError", "unacceptable value");
KeyError = newstdexception("KeyError", "invalid key");
OverflowError =
newstdexception("OverflowError", "arithmetic overflow");
} }
void void
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment