|
| From: | Lennart Borgman (gmail) |
| Subject: | Re: Checking parameters |
| Date: | Sun, 17 Jun 2007 12:55:17 +0200 |
| User-agent: | Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070604 Thunderbird/2.0.0.4 Mnenhy/0.7.5.666 |
Cecil Westerhof wrote:
I am new to Emacs and lisp.
What is the best way to check parameters and do error handling when they are
not correct?
I have the following function:
(defun getHours(time)
(interactive "sHH:MM: ")
(let ((timelist (split-string time ":")))
(+
(string-to-number (car timelist))
(/
(string-to-number (cadr timelist))
60.0
)
)
)
)
How do I check that there is exactly one parameter? And how do I check the
format and give an error that works in interactive and normal mode?
For example when I give
(getHours "0:120")
I get
2.0
How should I generate an error/exception?
You probably want to use the most simple way, something like
(defun get-hours(time)
(interactive "sHH:MM: ")
(let ((timelist (split-string time ":"))
(errmsg "Time format error"))
(unless (= (length (nth 1 timelist)) 2)
(error errmsg))
(+
(string-to-number (nth 0 timelist))
(/
(string-to-number (nth 1 timelist))
60.0))))
| [Prev in Thread] | Current Thread | [Next in Thread] |