代做CIS*2750 Assignment 1 Module 2: Error handling details functions代写R语言

CIS*2750

Assignment 1

Deadline: Monday, February 10, 11:59pm

Weight: 16.6%

Module 2: Error handling details functions

Description

This module provides additional details on expected error handling functionality.

Most error handling will take place in the createCard function, which has the following prototype:

VCardErrorCode createCard(char* fileName, Card** newCardObject);

We do not need to fully validate the format (yet). For example, we do not need to verify that the N property has 5 values. However, we do need to verify that the overall grammar of the file, as specified in Section 3.3 of the vCard specification, is correct.

So while an N property with 4 or 6 values would not be considered "invalid" in Assignment 1, an N property with no values would be considered invalid, since every property must have a value.

If createCard successfully creates a Card object, it returns VCardErrorCode value OK.

However, the parsing can fail for various reasons. In that case, the newCardObject argument must be set to NULL and the function must return the appropriate error code:

- INV_FILE is returned if there is a problem with fileName argument - it is null, it is an empty string, file does not exist or cannot be opened, file does not have the correct extension, etc..

If the error is in the file contents, you must use an appropriate error code - see below.

- INV_CARD is returned if the file can be opened, but vCard object itself is invalid. You would return this code if :

- The file is missing the begin and/or end tags.

- The file is missing any of the required properties, i.e. VERSION or FN

- The version is not 4.0

If the error is in one of the properties (optional or required), return a property-specific error code instead (see below).

- INV_PROP is returned a property in a vCard file is somehow invalid, and cannot be parsed correctly. There are too many possibilities to list, but some of them are:

- The property has no value

- The property has no : separator

- Property parameter has no value

- Invalid line terminator

- etc.

- OTHER_ERROR is returned if some other, non-vCard error happens (e.g. malloc returns null).

Error guidelines:

- Always return the earliest error in the file - i.e. the error with the smallest line number. For example, if the file is missing the VERSION and, later in the file, has a property with no value, you must return INV_CARD, not INV_PROP. You could always keep track of the line number that generated the error to avoid ambiguity. Since you are parsing your file in order, this should not be difficult.

- On the other hand, if the problem is that the required FN property is missing its value, the error code must be INV_PROP.

- Make sure the error is specific. If the error is in the header TEL property, the error code must be INV_PROP - not INV_CARD. or INV_FILE.

Error Handling

The error handling functionality in your code must return the correct error code. It should not try to "fix" the error in any way. In particular:

- Do not print any error messages to the screen. Simply return the error code, and let the "user" of your library - i.e. whatever function called createCard() - deal with the error

- Do not ask the user to re-enter any input, e.g. if file name is invalid. Again, that is not the job of the library. The library simply detects and reports the errors.

You must make sure that you free all temporary resources if an error is encountered. For example, if, when you get to the end of a vCard file, you find that the end tag is missing, you will need to free all memory that you may have allocated to a Card object, close the file, and return INV_CARD.

Make sure you validate all function arguments, particularly in the card parser functions. Passing an invalid argument should not crash your code. For example, printing or freeing a null Card struct must be handled gracefully. An attempt to delete a null card using deleteCard() must result in nothing happening. And attempt to print a null card using cardToString() would result in the function returning an appropriate string, e.g. "null".

Similarly, trying to print a non-existent error using

const char* errorToString(VCardErrorCode err);

must have a consistent, predictable behaviour - and not crash. If the error code is unknown - i.e. it is not defined in the VCardErrorCode type - return the string "Invalid error code".





热门主题

课程名

mktg2509 csci 2600 38170 lng302 csse3010 phas3226 77938 arch1162 engn4536/engn6536 acx5903 comp151101 phl245 cse12 comp9312 stat3016/6016 phas0038 comp2140 6qqmb312 xjco3011 rest0005 ematm0051 5qqmn219 lubs5062m eee8155 cege0100 eap033 artd1109 mat246 etc3430 ecmm462 mis102 inft6800 ddes9903 comp6521 comp9517 comp3331/9331 comp4337 comp6008 comp9414 bu.231.790.81 man00150m csb352h math1041 eengm4100 isys1002 08 6057cem mktg3504 mthm036 mtrx1701 mth3241 eeee3086 cmp-7038b cmp-7000a ints4010 econ2151 infs5710 fins5516 fin3309 fins5510 gsoe9340 math2007 math2036 soee5010 mark3088 infs3605 elec9714 comp2271 ma214 comp2211 infs3604 600426 sit254 acct3091 bbt405 msin0116 com107/com113 mark5826 sit120 comp9021 eco2101 eeen40700 cs253 ece3114 ecmm447 chns3000 math377 itd102 comp9444 comp(2041|9044) econ0060 econ7230 mgt001371 ecs-323 cs6250 mgdi60012 mdia2012 comm221001 comm5000 ma1008 engl642 econ241 com333 math367 mis201 nbs-7041x meek16104 econ2003 comm1190 mbas902 comp-1027 dpst1091 comp7315 eppd1033 m06 ee3025 msci231 bb113/bbs1063 fc709 comp3425 comp9417 econ42915 cb9101 math1102e chme0017 fc307 mkt60104 5522usst litr1-uc6201.200 ee1102 cosc2803 math39512 omp9727 int2067/int5051 bsb151 mgt253 fc021 babs2202 mis2002s phya21 18-213 cege0012 mdia1002 math38032 mech5125 07 cisc102 mgx3110 cs240 11175 fin3020s eco3420 ictten622 comp9727 cpt111 de114102d mgm320h5s bafi1019 math21112 efim20036 mn-3503 fins5568 110.807 bcpm000028 info6030 bma0092 bcpm0054 math20212 ce335 cs365 cenv6141 ftec5580 math2010 ec3450 comm1170 ecmt1010 csci-ua.0480-003 econ12-200 ib3960 ectb60h3f cs247—assignment tk3163 ics3u ib3j80 comp20008 comp9334 eppd1063 acct2343 cct109 isys1055/3412 math350-real math2014 eec180 stat141b econ2101 msinm014/msing014/msing014b fit2004 comp643 bu1002 cm2030
联系我们
EMail: 99515681@qq.com
QQ: 99515681
留学生作业帮-留学生的知心伴侣!
工作时间:08:00-21:00
python代写
微信客服:codinghelp
站长地图